题意:有一些网络通过一些线路连接,求关键的连接,也就是桥,如果删除这个链接那么会产生两个子树
分析:注意一下图不是连通图即可
*******************************************************************
#include<stdio.h>
#include<string.h>
#include<stack>
#include<algorithm>
using namespace std; const int MAXN = 1005; ///构建邻接表
struct Edge{int v, next;}e[MAXN*MAXN];
int Head[MAXN], cnt;
void AddEdge(int u, int v)
{
    e[cnt].v = v;
    e[cnt].next = Head[u];
    Head[u] = cnt++;
} ///记录桥
struct Bridge{int u, v;}bri[MAXN];
int bnt;
bool cmp(Bridge n1, Bridge n2)
{
    if(n1.u != n2.u)
        return n1.u < n2.u;
    return n1.v < n2.v;
} int f[MAXN];
int Dfn[MAXN], Low[MAXN], Index; void InIt(int N)
{
    cnt = bnt = Index = 0;
    for(int i=0; i<=N; i++)
    {
        Head[i] = -1;
        Dfn[i] = false;
    }
}
void Tarjan(int u, int father)
{
    f[u] = father;
    Low[u] = Dfn[u] = ++Index;     for(int j=Head[u]; j!=-1; j=e[j].next)
    {
        int v = e[j].v;
        if( !Dfn[v] )
        {
            Tarjan(v, u);
            Low[u] = min(Low[u], Low[v]);
        }
        else if( v != father )
            Low[u] = min(Low[u], Dfn[v]);
    }
} int main()
{
    int N;     while(scanf("%d", &N) != EOF)
    {
        int i, u, v, M;         InIt(N);         for(i=0; i<N; i++)
        {
            scanf("%d (%d)", &u, &M);             while(M--)
            {
                scanf("%d", &v);
                AddEdge(u, v);
            }
        }         for(i=0; i<N; i++)
        {
            if( !Dfn[i] )
                Tarjan(i, i);
        }         for(i=0; i<N; i++)
        {
            int u = f[i];
            if( Low[i] > Dfn[u] )
            {
                bri[bnt].u = min(u, i);
                bri[bnt++].v = max(u, i);
            }
        }         sort(bri, bri+bnt, cmp);         printf("%d critical links\n", bnt);         for(i=0; i<bnt; i++)
            printf("%d - %d\n", bri[i].u, bri[i].v);
        printf("\n");
    }     return 0;
}

C - Critical Links - uva 796(求桥)的更多相关文章

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

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

  2. UVA 796 Critical Links(Tarjan求桥)

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

  3. uva 796 C - Critical Links(tarjan求桥)

    题目链接:https://vjudge.net/contest/67418#problem/C 题意:求出桥的个数并且按顺序输出 题解:所谓桥就是去掉这条边后连通块增加,套用一下模版就行. #incl ...

  4. (连通图 模板题 无向图求桥)Critical Links -- UVA -- 796

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

  5. UVA796 - Critical Links(Tarjan求桥)

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

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

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

  7. [kuangbin带你飞]专题九 连通图C - Critical Links UVA - 796

    这道题就是要求桥的个数. 那么桥相应的也有判定的定理: 在和u相邻的节点中,存在一个节点是最小的时间戳都比 当前u的访问次序要大,也就是说这个点是只能通过果u到达,那么 他们之间相邻的边就是的桥 #i ...

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

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

  9. UVA 796 Critical Links (tarjan算法求割边)

    这是在kuangbin的题目里看到的,不得不吐槽一下,题目中居然没给出数据范围,还是我自己猜的-本来是一道挺裸的题,但是我wa了好多次,原因就是这里面有两个坑点,1重边特判,2输出时左边必须比右边小. ...

随机推荐

  1. hdu1074 Doing Homework(状态压缩DP Y=Y)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  2. Java Numeric Formatting--reference

    I can think of numerous times when I have seen others write unnecessary Java code and I have written ...

  3. HDu -2844 Coins多重背包

    这道题是典型的多重背包的题目,也是最基础的多重背包的题目 题目大意:给定n和m, 其中n为有多少中钱币, m为背包的容量,让你求出在1 - m 之间有多少种价钱的组合,由于这道题价值和重量相等,所以就 ...

  4. 面试题 HashMap 数据结构 实现原理

    数据结构 HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组:数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O ...

  5. SQL语句添加删除修改字段及一些表与字段的基本操作

    用SQL语句添加删除修改字段 1.增加字段     alter table docdsp    add dspcode char(200)2.删除字段     ALTER TABLE table_NA ...

  6. DotNet中的计时器线程计时器

    转载自:http://hi.baidu.com/wingingbob/item/9f1c9615f3b24d5f2b3e225c 基于多线程设计,计时器工作在ThreadPool线程上,存在事件的重入 ...

  7. C# - Excel - Microsoft Access 数据库引擎找不到对象

    我几乎要无语了,疯掉了,以为是office本身的问题,换了好多次office2007,安装又不顺利,换到了office2010,想想大部分应该兼容2007,所以用着office2010了. 甚至差点要 ...

  8. C#中数据源绑定DataSource以及相关控件(DataGridView)的使用总结

    我们在编程过程中,会涉及到表格数据的显示,存储等,就可能涉及到DataGridView,DataSource, DataTable等概念. 下面我就我自己模糊的一些知识点串讲以下: 1)首先我要讲的是 ...

  9. 转载:CURL常用命令

    转载网址:http://www.cnblogs.com/gbyukg/p/3326825.html 下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://www.cent ...

  10. PHPCMSV9 更改后台地址

    修改PHPCMS v9默认后台登录地址 1.修改admin.php文件名,并修改跳转地址写上完整路径2.修改 /phpcms/modules/admin/classes/index.php,把 pub ...