冷喵 提交的代码
提交时间:2022年1月27日 10:55 语言:C++运行时间:20ms占用内存:747K
运行状态: Wrong Answer
题目:最短路径1286

大会员可查看代码,点此开通大会员

                
                    #include<iostream>
#include<algorithm>//包含fill函数
using namespace std;

#define INF 0x3f3f3f
const int maxn = 1005;
int n,m;
int G[maxn][maxn];
int fa[maxn];
int dis[maxn];
bool vis[maxn];

int f(int x)
{
	int s = 1;
	for (int i = 1; i <= x; i++)
	{
		s = (s*2)%100000;//距离
	}
	return s;
}

void dijkstra(int x)
{
	fill(vis,vis+maxn,false);//按照单元赋值,将一个区间的元素都赋予val值
	                         //函数参数:fill(vec.begin(),vec.end(),val);val为将要替换的值
	fill(dis,dis+maxn,INF);
	for(int i = 0; i < n; i++)  dis[i] = G[x][i];
	dis[x] = 0;
	vis[x] = true;
	for (int i = 1; i < n; i++)
	{
		int min = INF;
		int u = -1;
		for (int j = 0; j < n; j++)
		{
			if (vis[j] == false && dis[j] < min)
			{
				min = dis[j];
				u = j;
			}
		}
		if (u == -1) return;
		vis[u] = true;
		for (int j = 0; j < n; j++)
		{
			if (vis[j] == false && dis[j] > dis[u] + G[u][j])
				dis[j] = dis[u] + G[u][j];
		}
	}
}

int find(int x)
{
	while (x!=fa[x])  x = fa[x];
	return x;
}

int main()
{
	while (cin>>n>>m)
	{
		if (n == 0) break;
		int a,b;
		for (int i = 0; i < n; i++)  fa[i] = i;
		fill (G[0],G[0] + maxn*maxn,INF);//初始化
		for (int i = 0; i < m; i++)
		{
			cin>>a>>b;
			int fx = find(a);
			int fy = find(b);
			if (fx != fy)
			{
				fa[fx] = fy;
				G[a][b] = G[b][a] = f(i);
			}
			else continue;
		}
		dijkstra(0);
		for (int i = 1; i < m; i++)
		{
			if(dis[i] == INF) cout<<"-1"<<endl;
			else  cout<<dis[i]%100000<<endl;
		}
	}
	return 0;
}
                
                
输入数据

大会员可查看数据,点此开通大会员

99 455
28 43
72 79
23 70
55 39
69 1
41 40
5 25
95 4
42 54
79 55
98 8
60 33
26 17
44 76
91 10
32 18
54 3
95 75
73 52
13 43
51 54
81 56
77 76
59 20
29 39
74 28
46 35
62 72
50 5
49 40
15 81
59 69
83 53
43 57
4 56
0 54
9 81
11 87
56 68
6 86
7 78
15 53
14 75
24 65
80 73
6 96
53 63
64 37
16 9
93 20
63 91
74 73
71 84
59 29
51 63
16 56
43 29
8 55
6 32
19 86
4 24
81 58
87 47
93 2
54 85
21 16
77 93
87 50
76 47
77 29
10 93
83 53
21 92
9 27
25 29
13 30
51 92
86 37
38 78
40 92
65 61
8 41
55 95
91 31
44 67
60 52
59 44
6 ...
你的输出

大会员可查看数据,点此开通大会员

24944
7168
3904
10304
94272
34496
69120
15368
20704
27936
99360
72032
34496
52608
2144
31360
79488
79008
71872
52672
34592
24321
34180
57280
94336
83584
48096
10209
82272
44064
60960
46240
11713
51360
15552
61664
86656
17888
59488
1376
1408
38624
10208
40320
83272
24416
57984
88288
72288
58816
86944
12033
46592
38368
59496
41120
44800
37920
41280
9665
85664
77738
68928
41984
79488
38881
39136
48064
24928
34176
95905
60010
49889
64641
41504
32128
37824
41344
60008
94305
43968
40160
13888
25409
89984
48384
4 ...
正确输出

大会员可查看数据,点此开通大会员

24944
7168
3904
10304
94272
34496
69120
15368
20704
27936
99360
72032
34496
52608
2144
31360
79488
79008
71872
52672
34592
24321
34180
57280
94336
83584
48096
10209
82272
44064
60960
46240
11713
51360
15552
61664
86656
17888
59488
1376
1408
38624
10208
40320
83272
24416
57984
88288
72288
58816
86944
12033
46592
38368
59496
41120
44800
37920
41280
9665
85664
77738
68928
41984
79488
38881
39136
48064
24928
34176
95905
60010
49889
64641
41504
32128
37824
41344
60008
94305
43968
40160
13888
25409
89984
48384
4 ...