题意:

给出无向图,求桥的模板题。

#include <bits/stdc++.h>
using namespace std;
const int N = ;
int dfn[N], low[N];//时间戳;low[i]以i为根子树的最小祖先的时间戳
bool vis[N];
vector<int>V[N];
int n, num, c;
pair<int, int>P[N];
void dfs(int s, int f)
{
low[s] = dfn[s] = ++num;
for(unsigned int i = ; i < V[s].size(); i++)
{
int v = V[s][i];
if(!dfn[v])//未访问过(s-v为树边)
{
dfs(v, s);//dfs完更新出low[v]
low[s] = min(low[s], low[v]);
if(low[v] > dfn[s])//割边不加=
P[++c].first = min(v, s), P[c].second = max(v, s);
}
else if(v != f) low[s] = min(low[s], dfn[v]);//回边且不是父子
}
}
int main()
{
int t, n, cas = , m, a, b;
cin>>t;
while(t--)
{
memset(dfn, , sizeof dfn);
memset(low, , sizeof low);
memset(vis, , sizeof vis);
scanf("%d", &n);
for(int i = ; i < n; i++) V[i].clear();
num = , c = ;
for(int i = ; i <= n; i++)
{
scanf("%d (%d)", &a, &m);
while(m--)
{
scanf("%d", &b);
V[a].push_back(b);
V[b].push_back(a);
}
}
for(int i = ; i < n; i++)
{
if(!vis[i])
dfs(i, i);
}
sort(P+, P++c);
printf("Case %d:\n%d critical links\n", ++cas, c);
for(int i = ; i <= c; i++)
printf("%d - %d\n", P[i].first, P[i].second);
}
return ;
}

【lightoj-1026】Critical Links(桥)的更多相关文章

  1. Light OJ - 1026 - Critical Links(图论-Tarjan算法求无向图的桥数) - 带详细注释

     原题链接   无向连通图中,如果删除某边后,图变成不连通,则称该边为桥. 也可以先用Tajan()进行dfs算出所有点 的low和dfn值,并记录dfs过程中每个 点的父节点:然后再把所有点遍历一遍 ...

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

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

  3. lightoj 1026 无向图 求桥

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1026 #include<cstdio> #include<cstri ...

  4. UVA 796 Critical Links(Tarjan求桥)

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

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

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

  6. UVA 796 - Critical Links (求桥)

    Critical Links  In a computer network a link L, which interconnects two servers, is considered criti ...

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

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

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

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

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

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

随机推荐

  1. Django-1版本的路由层、Django的视图层和模板层

    一.Django-1版本的路由层(URLconf) URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:我们就是以这种方式告诉Dja ...

  2. Vijos p1303导弹拦截(LIS+贪心)

    传送门:https://vijos.org/p/1303 背景 实中编程者联盟为了培养技术精湛的后备人才,必须从基础题開始训练. 描写叙述 某国为了防御敌国的导弹突击,研发出一种导弹拦截系统. 可是这 ...

  3. Python井字游戏

    import sys def print_board(): for i in range(3): for j in range(3): print map[2 - i][j], if j != 2: ...

  4. QT Creator常用快捷键

    1.F10,F11 单步调试 2.Ctrl + / :注释/取消注释选定内容. 3.F4 :在 头文件(.h) 和 实现文件(.cpp) 之间进行切换. 4.Ctrl + i :自动格式化选中代码. ...

  5. go——类型的本质

    在声明一个新类型之后,声明一个该类型的方法之前,需要先回答一个问题:这个类型的本质是什么. 如果给这个类型增加或删除某个值,是要创建一个新值,还是要更改当前的值? 如果是要创建一个新值,该类型的方法就 ...

  6. SVN项目迁移到GIT

    源项目为SVN项目,  复制一份出来后. 在VS里无法修改 源码管理器的插件为GIT.    解决方法:  删除SVN插件信息 在解决方案文件中. 删除以下SVN信息就可以了   删除后:

  7. GIT学习笔记(2):时光机穿梭与远程仓库

    GIT学习笔记(2):时光机穿梭与远程仓库 撤销操作 1.GIT如何跟踪修改 在我们修改了代码内容后,执行了git add和git commit命令来将其交由Git进行版本控制.我们前面举的例子是这样 ...

  8. Codeforces Round #395 (Div. 2)B. Timofey and cubes

    地址:http://codeforces.com/contest/764/problem/B 题目: B. Timofey and cubes time limit per test 1 second ...

  9. memcached单点

    一.Repcached (memcached同步补丁) 下载地址:http://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2 ...

  10. mapreduce编程--(准备篇)

    mapreduce编程准备 学习mapreduce编程之前需要做一些概念性的了解,这是做的一些课程学习笔记,以便以后时不时的翻出来学习下,之前看过一篇文章大神们都是时不时的翻出基础知识复习下,我也做点 ...