POJ 1144 Network (Tarjan求割点)

原创 2015年11月17日 17:28:55

http://poj.org/problem?id=1144

题意:求割点的个数。
裸模板。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;
const int N = 110;

int dfn[N],low[N];
bool cut[N];
int rt ,rt_num,dep;
vector<int> vet[N];

void dfs(int u)
{
    dfn[u] = low[u] = ++dep;
    for(int i=0; i<vet[u].size();i++)
    {
        int v = vet[u][i];
        if(!dfn[v])
        {
            dfs(v);
            if(u==rt) rt_num++;
            else
            {
                low[u] = min(low[u],low[v]);
                if(low[v] >= dfn[u]) cut[u] = true;
            }
        }
        else low[u] = min(low[u],dfn[v]);
    }
    return;
}
int main()
{
    //freopen("data.in","r",stdin);
    int n;
    while(scanf("%d",&n)!=EOF && n)
    {
        for(int i=1;i<=n;i++)  vet[i].clear();
        int x,y; char ch;

        while(scanf("%d",&x)!=EOF && x)
        {
            while(scanf("%d%c",&y,&ch)!=EOF)
            {
                vet[x].push_back(y);
                vet[y].push_back(x);

                if(ch=='\n')
                    break;
            }
        }

        rt = 1, rt_num = 0;
        memset(dfn,0,sizeof(dfn));
        memset(cut,false,sizeof(cut));
        dfs(1);

        int ans = 0;
        dep = 0;
        if(rt_num>1) cut[rt]=true;
        for(int i=1;i<=n;i++)
            if(cut[i]) ans++;
        cout<<ans<<endl;
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【POJ 1144】Network(Tarjan求割点)

红叶黄花秋意晚,千里念行客

poj1144Network 无向图求割点Tarjan

n个点,组成一个无向图,求这个图中割点的数量。模板题。 只是这道题在输入数据的时候有点麻烦,如样例中,第一组数据有五个点,5 1 2 3 4 表示5这个点与1 2 3 4 点相连。其中这个图的割点...

[poj1144 Network]tarjan求割点

Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9767   Accept...

POJ 1144 Network 无向图求割点Tarjan

题目描述:Description A Telephone Line Company (TLC) is establishing a new telephone cable network. They...

poj 1144 Network tarjan求无向连通图的割点个数

A Telephone Line Company (TLC) is establishing a new telephone cable network. They are connecting se...

tarjan求割点 poj 1144

tarjan可真是多才多艺,既求强连通,又求割点割边,还求lca,居然每一种都相差不多。求割点主要是利用dfs遍历树(李顶龙童鞋一直不理解tarjan,从dfs树应该比较直观)。rel[x]记录x实际...

POJ 1144 Network 无向图求割点

来源:http://poj.org/problem?id=1144 题意:就是给你一些点,某些点之间有边。求有多少个点是割点。 思路:模板题目了,直接用无向图求个点模板就可以ac。需要注意的是输入...
  • wmn_wmn
  • wmn_wmn
  • 2012年08月25日 10:59
  • 3395

POJ 1144 Network 求割点

Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14235 Accepted: 646...

POJ 1144 Network 图论 求割点模板

这道题目是个简单的割点模板题目。就直接贴代码了。 考虑一下输入就行,那个比较麻烦。#include #include #include #include using namespace st...

POJ 1144 & Uva 315 Network 【求割点数目】

Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10855   Accep...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1144 Network (Tarjan求割点)
举报原因:
原因补充:

(最多只允许输入30个字)