用tarjan缩点 
然后用dfn[u] < low[v]缩点并且保存起来 
在sort一遍输出

 #include<stdio.h>
#include<string.h>
#include<algorithm> using namespace std; const int maxn = ; struct Node {
int u;
int v;
int next;
};
struct Edge{
int u;
int v;
};
Edge edge[maxn];
Node node[maxn * ];
int head[maxn];
int dfn[maxn];
int low[maxn];
int fath[maxn];
bool vis[maxn];
bool maps[maxn][maxn];
int n, tol, cnt; void init() {
cnt = tol= ;
memset(dfn, , sizeof(dfn));
memset(low, , sizeof(low));
memset(maps, , sizeof(maps));
memset(fath, , sizeof(fath));
memset(head, -, sizeof(head));
memset(vis, false, sizeof(vis));
} void addnode(int u, int v) {
node[tol].u = u;
node[tol].v = v;
node[tol].next = head[u];
head[u] = tol++;
} void dfs(int u, int fa){
fath[u] = fa;
low[u] = dfn[u] = ++cnt;
vis[u] = true;
for(int i=head[u]; i!=-; i=node[i].next) {
int v = node[i].v;
if(!dfn[v]) {
dfs(v, u);
low[u] = min(low[u], low[v]);
} else if(v != fa) {
low[u] = min(low[u], dfn[v]);
}
}
} void tarjan() {
for(int u=; u<n; u++) {
if(!dfn[u]) {
dfs(u, u);
}
}
} bool cmp(Edge a, Edge b) {
if(a.u == b.u)
return a.v < b.v;
else
return a.u < b.u;
} void solve() {
tol = ;
for(int u=; u<n; u++) {
int v = fath[u];
if(low[u] > dfn[v] && v != u) {
edge[tol].u = u;
edge[tol].v = v;
if(edge[tol].u > edge[tol].v)
swap(edge[tol].u, edge[tol].v);
tol++;
}
}
sort(edge, edge+tol, cmp);
printf("%d critical links\n", tol);
for(int i=; i<tol; i++) {
printf("%d - %d\n", edge[i].u, edge[i].v);
}
printf("\n");
} int main() {
while(scanf("%d", &n) != EOF) {
init();
if(n == ) {
printf("0 critical links\n\n");
continue;
}
for(int i=; i<=n; i++) {
int u;
int num;
scanf("%d (%d)", &u, &num);
for(int j=; j<=num; j++) {
int v;
scanf("%d", &v);
maps[u][v] = maps[v][u] = ;
}
}
for(int i=; i<n; i++) {
for(int j=i+; j<n; j++) {
if(maps[i][j]) {
addnode(i, j);
addnode(j, i);
}
}
}
tarjan();
solve();
}
return ;
}

Uva796 Critical Links的更多相关文章

  1. UVA796 Critical Links —— 割边(桥)

    题目链接:https://vjudge.net/problem/UVA-796 In a computer network a link L, which interconnects two serv ...

  2. uva-796.critical links(连通图的桥)

    本题大意:求出一个无向图的桥的个数并且按照顺序输出所有桥. 本题思路:注意判重就行了,就是一个桥的裸题. 判重思路目前知道的有两种,第一种是哈希判重,第二种和邻接矩阵的优化一样,就是只存图的上半角或者 ...

  3. [UVA796]Critical Links(割边, 桥)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  4. UVA796 Critical Links(求桥) 题解

    题意:求桥 思路:求桥的条件是:(u,v)是父子边时 low[v]>dfn[u] 所以我们要解决的问题是怎么判断u,v是父子边(也叫树枝边).我们在进行dfs的时候,要加入一个fa表示当前进行搜 ...

  5. UVA796 - Critical Links(Tarjan求桥)

    In a computer network a link L, which interconnects two servers, is considered critical if there are ...

  6. UVA796:Critical Links(输出桥)

    Critical Links 题目链接:https://vjudge.net/problem/UVA-796 Description: In a computer network a link L, ...

  7. kuangbin专题 专题九 连通图 Critical Links UVA - 796

    题目链接:https://vjudge.net/problem/UVA-796 题目:裸的求桥,按第一个元素升序输出即可. #include <iostream> #include < ...

  8. Light OJ 1026 - Critical Links (图论-双向图tarjan求割边,桥)

    题目大意:双向联通图, 现在求减少任意一边使图的联通性改变,按照起点从小到大列出所有这样的边 解题思路:双向边模版题 tarjan算法 代码如下: #include<bits/stdc++.h& ...

  9. UVA 796 Critical Links(Tarjan求桥)

    题目是PDF就没截图了 这题似乎没有重边,若有重边的话这两点任意一条边都不是桥,跟求割点类似的原理 代码: #include <stdio.h> #include <bits/std ...

随机推荐

  1. AJAX返回值问题

    ajax同步方式获取返回值,必须以同步请求的的方式获取. //主函数部分 function confirm(id,...)//省略部分参数 { //...省略部分代码 //任务涉及专业 var Maj ...

  2. Python 爬虫 解析库的使用 --- XPath

    一.使用XPath XPath ,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言.它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索. 所 ...

  3. Codeforces 1154F Shovels Shop

    题目链接:http://codeforces.com/problemset/problem/1154/F 题目大意: 商店有n把铲子,欲购k把,现有m种优惠,每种优惠可使用多次,每种优惠(x, y)表 ...

  4. python之路--类与类之间的关系

    类和类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻 ...

  5. k8s授权访问

    #监听本地的8080端口 kubectl  proxy --port=8080 [root@k8s-m ~]# kubectl proxy --port=8080Starting to serve o ...

  6. StatefulSet

    StatefulSet: 1.稳点且唯一的网络标识符 2.稳点且持久的存储 3.有序.平滑的部署和扩展 4.有序.平滑的删除和终止 5.有序的滚动更新 三个组件组成:headless(无头服务)    ...

  7. How the Microsoft Bot Framework Changed Where My Friends and I Eat: Part 1

    Bots are everywhere nowadays, and we interact with them all of the time. From interactions on our ph ...

  8. Tom和Jerry在下棋

    题目描述 方法: 状压DP #include <cstdio> #define bc(x) (__builtin_popcount(x)) ; ; << maxn][maxn ...

  9. BZOJ4477[Jsoi2015]字符串树——可持久化trie树

    题目描述 萌萌买了一颗字符串树的种子,春天种下去以后夏天就能长出一棵很大的字符串树.字符串树很奇特,树枝上都密密麻麻写满了字符串,看上去很复杂的样子.[问题描述]字符串树本质上还是一棵树,即N个节点N ...

  10. Android环境搭建(大学授课课件)

    前面一直没有提过如何搭建Android开发环境,其实这些网上一大堆,随便一搜就是很多大神的详细介绍.本人过于懒惰,拿出大学授课课件供大家参考.非原创 位)   下载地址: sdk:http://pan ...