HDU5876Sparse Graph(补图最短路)
来源:互联网 发布:线切割编程要证明的 编辑:程序博客网 时间:2024/06/03 23:41
题意:给出一个图,和一个起点,求在该图的补图中从起点到其他N-1个点的最短距离。如果不连通输出-1.
分析:
利用原图求补图上的最短路,bfs遍历,U到 与U的不邻接的点的边即为补图的一条边,可以直接计算出 到这些不邻接的点距离,dis[v']=dis[u]+1;然后将这些不邻接的点加入队列,继续寻找,用两个集合,,一个记录不邻接的点,一个记录没有用过的点
#include<bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f3f;const int maxn = 200005;int head[maxn], dis[maxn], tol;struct Edge{ int v, nxt;}edge[maxn];void add_Edge(int u, int v){ edge[tol].v = v;edge[tol].nxt = head[u];head[u] = tol++; edge[tol].v = u;edge[tol].nxt = head[v];head[v] = tol++;}void bfs(int st, int n){ dis[st] = 0; set<int> s1, s2; for(int i = 1; i <= n; i++) { if(i == st) continue; s1.insert(i); } queue<int> q;q.push(st); while(!q.empty()) { int u = q.front();q.pop(); for(int i = head[u]; i != -1; i = edge[i].nxt) { int v = edge[i].v; if(!s1.count(v)) continue; s1.erase(v);s2.insert(v); } for(auto it = s1.begin(); it != s1.end(); it++) { dis[*it] = dis[u]+1; q.push(*it); } s1.swap(s2); s2.clear(); }}void solve(){ int n, m, st; tol = 0; memset(head, -1, sizeof(head)); memset(dis, 0x3f, sizeof(dis)); scanf("%d%d", &n, &m); for(int i = 0; i < m; i++) { int u, v; scanf("%d%d", &u, &v); add_Edge(u, v); } scanf("%d", &st); bfs(st, n); bool flag = false; for(int i = 1; i <= n; i++) { if(i == st) continue; if(flag) printf(" %d", dis[i]); else printf("%d", dis[i]), flag = true; } puts("");}int main(){ int t; scanf("%d", &t); while(t--) { solve(); } return 0;}
阅读全文
0 0
- HDU5876Sparse Graph(补图最短路)
- hdu5876Sparse Graph(求补图的最短路)
- hdu5876Sparse Graph
- hdu5876 Sparse Graph(补图最短路)
- hdu 5876 Sparse Graph(补图最短路)
- hdu 5876 Sparse Graph 补图最短路
- Hdu 5876 Sparse Graph(补图最短路)
- sgu226:Colored graph(最短路)
- CSU1659: Graph Center(最短路)
- GBX的Graph(最短路)
- hdu5876 Sparse Graph(补图上求最短路)
- hdu 5876 Sparse Graph(补图最短路) 2016 ACM/ICPC Asia Regional Dalian Online 1009
- 【2016-大连赛区网络赛-I】补图最短路(Sparse Graph,hdu 5876)
- HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)
- hdu 4034 Graph 最短路Floyed
- [HDOJ 4984] Goffi and Graph [最短路]
- hdu 4034 Graph(深化最短路floyd)
- HDU 4034Graph floyd 最短路
- R语言基础之数据类型
- pat 乙级 1009. 说反话 (20)
- 未能加载文件或程序集“xxx”或它的某一个依赖项。试图加载格式不正确的程序。
- 关于new的讨论
- 数据结构封装之《GTree通用树》
- HDU5876Sparse Graph(补图最短路)
- WP手机短信导出方法和MSG格式文件阅读器的实现
- Android开发 之 OpenGL ES系列(1--创建显示环境)
- OSG的渲染树与状态树
- leetcode 48. Rotate Image 矩阵旋转
- Java多线程--happens-before
- python基础——模块
- 《OpenGL v1.1》——(1)接入Win32窗口,并描绘基本图元
- Java GC工作原理以及Minor GC、Major GC、Full GC简单总结