UVA796
来源:互联网 发布:python多进程读取文件 编辑:程序博客网 时间:2024/06/03 12:28
Critical Links
题目链接
分类:
Graph
1.题意概述
- 给你一个图,要你按顺序求出图中所有的桥。
2.解题思路
- 根据Tarjan求割边的算法找出所有
low[v]>dfn[u]
边就行,算是一道入门题。
3.AC代码
#include <bits/stdc++.h>using namespace std;typedef pair<int, int> PII;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define maxn 10010/* head */struct Edge { int to, next; bool cut;} E[maxn << 1];int head[maxn], cnt;int dfn[maxn], low[maxn], sec;int bridge, n;void init() { memset(head, -1, sizeof head); memset(dfn, 0, sizeof dfn); memset(low, 0, sizeof low); cnt = sec = bridge = 0;}void addedge(int u, int v) { E[cnt].to = v; E[cnt].next = head[u]; E[cnt].cut = 0; head[u] = cnt++;}void tarjan(int u, int fa) { dfn[u] = low[u] = ++sec; for (int i = head[u]; ~i; i = E[i].next) { int v = E[i].to; if (v != fa) { if (!dfn[v]) { tarjan(v, u); low[u] = min(low[u], low[v]); if (low[v] > dfn[u]) { ++bridge; E[i].cut = 1; E[i ^ 1].cut = 1; } } else low[u] = min(low[u], dfn[v]); } }}int main() { while (~scanf("%d", &n)) { init(); rep(i, 0, n) { int u, m; scanf("%d (%d)", &u, &m); ++u; while (m--) { int v; scanf("%d", &v); ++v; addedge(u, v); addedge(v, u); } } rep(i, 1, n + 1) { if (!dfn[i]) tarjan(i, i); } printf("%d critical links\n", bridge); vector<PII> ans; rep(u, 1, n + 1) { for (int i = head[u]; ~i; i = E[i].next) { int v = E[i].to; if (E[i].cut && v > u) ans.pb(mp(u, v)); } } sort(All(ans)); int sz = SZ(ans); rep(i, 0, sz) printf("%d - %d\n", ans[i].fi - 1, ans[i].se - 1); puts(""); } return 0;}
阅读全文
0 0
- UVA796
- 【UVA796】【无向图割边】
- UVA796(求桥)
- UVA796-Critical Links
- UVA796(61/600)
- UVA796 Critical Links (tanjar求桥)
- tarjan算法的学习 uva12167,uva315,uva796
- UVA796- Critical Links(无向图的桥)
- UVA796.Critical Links——无向图的桥
- uva796 Critical Links(求桥并按边输出)
- <![CDATA[]]>和转义字符
- Java实现对MongoDB的AND、OR和IN操作
- hadoop案例测试——pi值、wordcount函数,hadoop不支持本地库问题
- kinect 1.8
- 方案数量
- UVA796
- 如何转载CSDN中的博客
- GET 还是 POST?
- 使用mysql慢查日志监控有效率问题的SQL语句
- Unity中关于场景漫游的两个方法(一)
- 连接到实验室服务器
- python 拔取网站
- 优先队列java-PriorityQueue
- Swoole整合ThinkPHP3.2系列教程二