hdu5876 Sparse Graph(补图最短路 bfs)

题目链接:hdu5876 Sparse Graph

详见代码。。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<queue>
 5 #include<vector>
 6 #include<set>
 7 using namespace std;
 8 const int N = 200001;
 9 const int inf = 0x3f3f3f3f;
10 int n, m;
11 vector<vector<int> >g;
12 int d[N];
13 void bfs(int s){
14     int u,v,i,j;
15     queue<int>q;
16     set<int>a; //不邻接的点
17     set<int>b; //未扩展的点
18     set<int>::iterator it;
19     for(i = 1; i <= n; ++i)
20         a.insert(i);
21     a.erase(s);
22     q.push(s);
23     while(!q.empty()){
24         u=q.front();
25         q.pop();
26         for(j=0;j<g[u].size();++j){
27             v=g[u][j];
28             if(!a.count(v))
29                 continue;
30             b.insert(v);
31             a.erase(v);
32         }
33         for(it = a.begin(); it != a.end(); it++){
34             d[*it] = d[u] + 1;
35             q.push(*it);
36         }
37         a.swap(b);
38         b.clear();
39     }
40 }
41 int main(){
42     int t, i, j, x, y, s, f;
43     scanf("%d", &t);
44     while(t--){
45         scanf("%d %d", &n, &m);
46         memset(d, inf, sizeof(d));
47         g.clear();
48         g.resize(N+1);
49         for(i = 0; i < m; ++i){
50             scanf("%d %d", &x, &y);
51             g[x].push_back(y);
52             g[y].push_back(x);
53         }
54         scanf("%d", &s);
55         d[s] = 0;
56         bfs(s);
57         f = 0;
58         for(i = 1; i <= n; ++i){
59             if(i == s)continue;
60             if(d[i] == inf)
61                 printf("-1\n");
62             else if(!f){
63                 printf("%d", d[i]);
64                 f = 1;
65             }
66             else
67                 printf(" %d",d[i]);
68         }
69         printf("\n");
70     }
71     return 0;
72 }
View Code

 

posted @ 2016-09-13 22:47  GraceSkyer  阅读(418)  评论(0编辑  收藏  举报

~~~~~~ACM大牛语录,激励一下~~~~~~

为了世界的和平,为了女生的安全,我拼命做题,做题,做题!

用最短的时间,刷最多的题!

给我一滴泪,我就看到了你全部的海洋!

seize the hour, seize the day.

人生难免有无奈,幸福走远了,或是感叹幸福来迟了.其实我一直相信,无论手中的幸福是多么微不足道的感觉,我会把握住那每一分,每一秒,当幸福依旧像那百鸟般飞逝,终究无法掌握时,我会感谢它,曾经降临过!

A自己的题,让别人郁闷去吧

WA肠中过,AC心中留 TLE耳边过,AC特别牛

天然的悲苦和伤逝,过去有过,以后还会有

^*^一步一步往上爬^*^

AC就像练级,比赛就像PK. 练级不如PK好玩

其实,世上本没有ACM,AC的人多了,也便有了!

AC无止尽~ Seek you forever~

找呀找呀找水题,找到一个AC一个呀!

AC是检验程序的唯一标准。

真的猛士,敢于直面惨淡的人生,敢于正视淋漓的鲜血……