补图上的BFS大连网络赛Sparse Graph
来源:互联网 发布:linux端口流量统计 编辑:程序博客网 时间:2024/06/04 08:32
题意 :N个点的完全图,删除M条边,问s到其他点的最短路是多少
bfs下,用set存点,若uv无边,则 距离加1切把v入队
#include<iostream>#include<cstdio>#include<algorithm>#include<stack>#include<queue>#include<cstring>#include<string>#include<set>#include<map>using namespace std;typedef long long LL;const int maxn = 2e5 + 10;set<int> G[maxn];set<int> p;int n,m;int d[maxn];void solve(){ int t; scanf("%d",&t); while(t--) { p.clear(); scanf("%d%d",&n,&m); for(int i =1;i<=n;i++) { p.insert(i); G[i].clear(); d[i] = -1; } for(int i = 0;i<m;i++) { int u,v; scanf("%d%d",&u,&v); G[u].insert(v); G[v].insert(u); } int s; scanf("%d",&s); p.erase(s); d[s] = 0; queue<int> q; q.push(s); while(!q.empty()) { int t = q.front(); q.pop(); vector<int> v; for(auto it = p.begin();it!=p.end();it++) { if(!G[t].count(*it)) { d[*it] = d[t] +1; q.push(*it); v.push_back(*it); } } for(int i = 0;i<v.size();i++) { p.erase(v[i]); } } bool flag = true; for(int i = 1;i<=n;i++) { if(i==s)continue; if(flag) { printf("%d",d[i]); flag = false; }else { printf(" %d",d[i]); } } printf("\n"); }}int main(){ solve(); return 0;}
0 0
- 补图上的BFS大连网络赛Sparse Graph
- hdu 5876 - Sparse Graph(2016大连网络赛) bfs
- 【icpc网络赛大连赛区】Sparse Graph
- HDU 5876 大连网络赛 Sparse Graph
- 2016大连网络赛Sparse Graph
- HDU 5876 Sparse Graph 大连网络赛
- 2016 ICPC 大连网络赛 HDU 5876 Sparse Graph
- HDU5876 Sparse Graph(2016亚洲区大连站网络赛)
- 【2016-大连赛区网络赛-I】补图最短路(Sparse Graph,hdu 5876)
- HDU 5876Sparse Graph (补图上BFS)
- hdu5876 Sparse Graph bfs + set
- hdu5876 Sparse Graph -补图的最短路-bfs
- HDU 5876 Sparse Graph(bfs+set)
- HDU 5876 Sparse Graph (补图找最短路/BFS)
- HDU 5876 Sparse Graph 补图BFS
- HDU-5876-Sparse Graph(BFS)
- HDU 5876 Sparse Graph(bfs)
- hdu5876 Sparse Graph(bfs最短路)
- Amazon EC2云端服务器的使用方法
- 去掉combobox回车内容不匹配清空输入项
- C++虚函数表剖析
- MySQL性能比较测试(转)
- How visa payment process
- 补图上的BFS大连网络赛Sparse Graph
- 博客放慢更新频率
- mysql读写分离实战(转)
- java post get 请求
- windows 守护进程
- 基本存储结构_动态数组类
- UML类图几种关系的总结
- 在Dubbo中开发REST风格的远程调用(RESTful Remoting)
- 字典的快速赋值