http://acm.hust.edu.cn/vjudge/contest/view.action?cid=86270#problem/C#include<iostream>

#include<stdio.h>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;
#define min(a, b) a<b?a:b;
#define swap(a, b) {t=a; a=b; b=t;};
#define N 10105
vector<vector<int> > G;
struct node
{
int x, y;
} maps[N];
bool cmp(node a, node b)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
int n, visit[N], rode[N], father[N];
int Time, ans;
void Init()
{
G.clear();
G.resize(n);
Time=ans=0;
memset(visit, 0, sizeof(visit));
memset(rode, 0, sizeof(rode));
memset(father, 0, sizeof(father));
}
void Tarjan(int u, int fu)
{
visit[u]=rode[u]=++Time;
father[u]=fu;
int len=G[u].size();
int v;
for(int i=0; i<len; i++)
{
v=G[u][i];
if(!visit[v])
{
Tarjan(v, u);
rode[u]=min(rode[v], rode[u]);
}
else if(fu!=v)
rode[u]=min(visit[v], rode[u]);
}
}
void solve()
{
int k=0, t;
for(int i=0; i<n; i++)
if(!visit[i])
Tarjan(i, -1);
for(int i=0; i<n; i++)
{
int v=father[i];
if(v!=-1&&visit[v]<rode[i])
{
maps[k].x=v;
maps[k].y=i;
if(maps[k].x>maps[k].y)
swap(maps[k].x, maps[k].y);
k++;
}
}
sort(maps, maps+k, cmp);
ans=k;
printf("%d critical links\n", ans);
for(int i=0; i<k; i++)
{
printf("%d - %d\n", maps[i].x, maps[i].y);
}
printf("\n");
}
int main()
{
while(scanf("%d", &n)!=EOF)
{
Init();
for(int i=0; i<n; i++)
{
int a, b, l;
scanf("%d (%d)", &a, &l);
while(l--)
{
scanf("%d", &b);
G[a].push_back(b);
G[b].push_back(a);
}
}
solve();
}
return 0;
}

UVA 796 连通图求桥的更多相关文章

  1. C - Critical Links - uva 796(求桥)

    题意:有一些网络通过一些线路连接,求关键的连接,也就是桥,如果删除这个链接那么会产生两个子树 分析:注意一下图不是连通图即可 ************************************* ...

  2. Network POJ - 3694(lca并查集+连通图求桥)

    就是求出原先图中的桥的数量,在每一次询问时加入一条新边,求加入当前边后图中剩余的桥的数量 求出原先图中的桥的数量,然后减去新加入边的两端点之间的桥的数量,就是剩余桥的数量.. 用并查集把属于同一集合的 ...

  3. UVA 796 Critical Links(模板题)(无向图求桥)

    <题目链接> 题目大意: 无向连通图求桥,并将桥按顺序输出. 解题分析: 无向图求桥的模板题,下面用了kuangbin的模板. #include <cstdio> #inclu ...

  4. uva 796 Critical Links(无向图求桥)

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

  5. UVA 796 Critical Links(无向图求桥)

    题目大意:给你一个网络要求这里面的桥. 输入数据: n 个点 点的编号  (与这个点相连的点的个数m)  依次是m个点的   输入到文件结束. 桥输出的时候需要排序   知识汇总: 桥:   无向连通 ...

  6. 无向连通图求割边(桥)hdu4738,hdu3849

    点击打开链接 题目链接:   hdu 4738 题目大意:   曹操有N个岛,这些岛用M座桥连接起来 每座桥有士兵把守(也可能没有) 周瑜想让这N个岛不连通,但只能炸掉一座桥 并且炸掉一座桥需要派出不 ...

  7. POJ 3694——Network——————【连通图,LCA求桥】

    Network Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Stat ...

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

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

  9. UVA 796 - Critical Links 无向图字典序输出桥

    题目:传送门 题意:给你一个无向图,你需要找出里面的桥,并把所有桥按字典序输出 这一道题就是用无向图求桥的模板就可以了. 我一直错就是因为我在输入路径的时候少考虑一点 错误代码+原因: 1 #incl ...

随机推荐

  1. python3----基础 用while循环+iter()+next() 实现对字符串的遍历与输出

    my_str = 'hello' # for循环 for v in my_str: print(v) # while 配合迭代器实现字符串的遍历 ite = iter(my_str) while Tr ...

  2. iOS 创建多个button实现点击改变背景颜色

    工程中需要实现与UISegmentedControl效果相似的一排一共十个button,如下图.但是SegmentedControl修改不太方便,就用button替代, 循环创建十个button,点击 ...

  3. ios应用,64位问题,Missing 64-bit support

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmFyb25fYmxvZ3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  4. ADODB

    转自网友,看着挺全就转了,供大家学习研究. Recordset 对象的属性1.CursorType 属性AdOpenForwardOnly: 仅向前游标,默认值.除了只能在记录中向前滚动外,与静态游标 ...

  5. 《从零开始学Swift》学习笔记(Day 23)——尾随闭包

    原创文章,欢迎转载.转载请注明:关东升的博客 闭包表达式可以作为函数的参数传递,如果闭包表达式很长,就会影响程序的可读性.尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用 ...

  6. 华盟网公开课 office 宏 主讲Alex

    powershell github: veil-evasion macroshop   unicorn https://github.com/trustedsec/unicorn metasploit ...

  7. java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x87<b

    实际开发中遇到的 情景: 解决方案:  复制的别人的博客,没测试, Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1 这个 ...

  8. Nuxt使用Vuex

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 基础知识这里不再重述,学习的话请自行到官网 ...

  9. fecha的使用

    项目中时间的处理是无法避免的,时间的处理方式有很多,这里介绍一下fecha的使用 fecha是一个日期格式化和解析的js库,它提供了强大的日期处理功能,功能强大且只有2k大小.安装方式简单,只需要 n ...

  10. HTTP 状态码简介(对照)

    HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应 ...