码迷,mamicode.com
首页 > 其他好文 > 详细

XDOJ_1072_tarjan

时间:2016-11-09 11:19:46      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:强连通分量   names   ace   acm   code   push   back   void   problem   

http://acm.xidian.edu.cn/problem.php?id=1072

 

求关键边的数量,即强连通分量-1,直接tarjan模版。

 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;

int n,m,dfn[10005],low[10005],num,cnt;
vector<int> v[10005];

void tarjan(int pos,int pre)
{
    dfn[pos] = low[pos] = ++num;
    for(int i = 0;i < v[pos].size();i++)
    {
        int x = v[pos][i];
        if(x == pre)  continue;
        if(dfn[x] == 0)
        {
            tarjan(x,pos);
            low[pos] = min(low[pos],low[x]);
            if(dfn[pos] < low[x])   cnt++;
        }
        else    low[pos] = min(low[pos],dfn[x]);
    }
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        num = 0;
        cnt = 0;
        memset(dfn,0,sizeof(dfn));
        memset(low,0,sizeof(low));
        scanf("%d%d",&n,&m);
        for(int i = 0;i < n;i++)    v[i].clear();
        while(m--)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            v[x].push_back(y);
            v[y].push_back(x);
        }
        tarjan(0,-1);
        printf("%d\n",cnt);
    }
    return 0;
}

 

XDOJ_1072_tarjan

标签:强连通分量   names   ace   acm   code   push   back   void   problem   

原文地址:http://www.cnblogs.com/zhurb/p/6045300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!