UVA 796 连通图求桥
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 连通图求桥的更多相关文章
- C - Critical Links - uva 796(求桥)
题意:有一些网络通过一些线路连接,求关键的连接,也就是桥,如果删除这个链接那么会产生两个子树 分析:注意一下图不是连通图即可 ************************************* ...
- Network POJ - 3694(lca并查集+连通图求桥)
就是求出原先图中的桥的数量,在每一次询问时加入一条新边,求加入当前边后图中剩余的桥的数量 求出原先图中的桥的数量,然后减去新加入边的两端点之间的桥的数量,就是剩余桥的数量.. 用并查集把属于同一集合的 ...
- UVA 796 Critical Links(模板题)(无向图求桥)
<题目链接> 题目大意: 无向连通图求桥,并将桥按顺序输出. 解题分析: 无向图求桥的模板题,下面用了kuangbin的模板. #include <cstdio> #inclu ...
- uva 796 Critical Links(无向图求桥)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 796 Critical Links(无向图求桥)
题目大意:给你一个网络要求这里面的桥. 输入数据: n 个点 点的编号 (与这个点相连的点的个数m) 依次是m个点的 输入到文件结束. 桥输出的时候需要排序 知识汇总: 桥: 无向连通 ...
- 无向连通图求割边(桥)hdu4738,hdu3849
点击打开链接 题目链接: hdu 4738 题目大意: 曹操有N个岛,这些岛用M座桥连接起来 每座桥有士兵把守(也可能没有) 周瑜想让这N个岛不连通,但只能炸掉一座桥 并且炸掉一座桥需要派出不 ...
- POJ 3694——Network——————【连通图,LCA求桥】
Network Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- kuangbin专题 专题九 连通图 Critical Links UVA - 796
题目链接:https://vjudge.net/problem/UVA-796 题目:裸的求桥,按第一个元素升序输出即可. #include <iostream> #include < ...
- UVA 796 - Critical Links 无向图字典序输出桥
题目:传送门 题意:给你一个无向图,你需要找出里面的桥,并把所有桥按字典序输出 这一道题就是用无向图求桥的模板就可以了. 我一直错就是因为我在输入路径的时候少考虑一点 错误代码+原因: 1 #incl ...
随机推荐
- Classification week3: decision tree 笔记
华盛顿大学 machine learnign :classification week 3 笔记 第二步: 注: 其中 ,mistake 的计算方法: 给定一个节点的数据集M,对每个特征hi(x),根 ...
- 学生成绩管理系统【c】
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #d ...
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
原创文章,欢迎转载.转载请注明:关东升的博客 可选类型: 我们先看看如下代码: n1 = nil //编译错误 let str: String = nil //编译错误 Int和String类型不能接 ...
- curl学习总结
1.接口 function interface($postfields=array(),$url){ //设置post请求HTTP头字段的数组 $httpheader ...
- Python3.6全栈开发实例[002]
2.判断用户传入的对象(字符串.列表.元组)长度是否大于5. li = [11,22,33,44,55,66,77,88,99,000,111,222] def func2(lst): if len( ...
- 深入struts2.0(六)--ActionProxy类
1.1 ActionProxy接口以及实现 ActionProxy在struts框架中发挥着很关键的数据. 通过webwork和xwork交互关系图能够看出.它是action和xwork中间的 ...
- 解决github访问慢和clone慢解决方案
在http://tool.chinaz.com/dns/ 这个网站输入github.com 打开cmd ping各个服务器ip地址,看看哪个比较好 windows下C:\Windows\System3 ...
- 016-Hadoop Hive sql语法详解6-job输入输出优化、数据剪裁、减少job数、动态分区
一.job输入输出优化 善用muti-insert.union all,不同表的union all相当于multiple inputs,同一个表的union all,相当map一次输出多条 示例 二. ...
- Quartz使用总结(转发:http://www.cnblogs.com/drift-ice/p/3817269.html)
Quartz可以用来做什么? Quartz是一个任务调度框架.比如你遇到这样的问题 想每月25号,信用卡自动还款 想每年4月1日自己给当年暗恋女神发一封匿名贺卡 想每隔1小时,备份一下自己的爱情动作片 ...
- NPOI 导入 导出
using NPOI.XSSF.UserModel; using System.IO; 导入 /// <summary> /// Excel转换DataTable /// </s ...