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求割点)

红叶黄花秋意晚,千里念行客
  • reverie_mjp
  • reverie_mjp
  • 2016年11月08日 00:09
  • 168

求无向图的割点 (poj 1144 Network)

割点 :去掉该点后原来的图不连通(出现好几个连通分量),该点被称为割点。 注意删除某点意味着和该点关联的边也全部删除 求割点的伪代码 DFS(v1,father): dfn[v1...
  • chaiwenjun000
  • chaiwenjun000
  • 2015年08月13日 19:03
  • 617

poj 1144 Network 无向图求割点

题目内容   就是给你一些点,某些点之间有边。求有多少个点是割点。 分析   模板题目了,直接用无向图求个点模板就可以ac。需要注意的是输入格式。   代码 const maxe=50000;...
  • A_loud_name
  • A_loud_name
  • 2016年06月25日 09:41
  • 247

POJ 2186【Tarjan算法(模板_缩点)】

//在一张有向无环图G,图G会包含很多环(环里面的点是等价的), //当然可以把环缩成一个点(利用tarjan缩点), //形成一棵树,题目要求是求除他以外的点都指向他,也就是只有一个叶子。 //因为...
  • KEYboarderQQ
  • KEYboarderQQ
  • 2016年05月15日 10:13
  • 797

POJ 1144 Network 求桥的模板题

题目地址:http://poj.org/problem?id=1144 直接上模板就好了 #include #include #include #include #include #inclu...
  • qq_34446253
  • qq_34446253
  • 2016年08月23日 13:18
  • 188

poj 1144 Network 无向图求割点

题意: 给一个有n个结点的连通无向图,
  • sepNINE
  • sepNINE
  • 2014年11月18日 22:33
  • 365

LCA问题的Tarjan算法(POJ1330)

LCA问题(Least Common Ancestors,最近公共祖先问题),是指给定一棵有根树T,给出若干个查询LCA(u, v)(通常查询数量较大),每次求树T中两个顶点u和v的最近公共祖先,即找...
  • hy1405430407
  • hy1405430407
  • 2015年09月02日 17:53
  • 685

POJ 1236(tarjan 强连通分量 缩点)

POJ1236题目大意问,对于一个DAG(又向无环图): 1.至少要选几个点,才能从这些点出发到达所有点 2.至少加入几条边,就能从图中任何一个点出发到达所有点分析先求DAG的强连通分量数,再缩点...
  • mmy1996
  • mmy1996
  • 2017年02月22日 22:11
  • 446

最近公共祖先(LCA)算法实现过程 【Tarjan离线+倍增在线+RMQ】

最近公共祖先(LCA) 首先来介绍下最近公共祖先(LCA)的概念 百度上的解释:对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度...
  • my_sunshine26
  • my_sunshine26
  • 2017年05月24日 22:31
  • 1188

poj 1144 Network(模板题)(Tarjan 关节点的朴素算法)

poj 1144 Network(模板题)(Tarjan 关节点的朴素算法)求无向图的关节点模板题,用Tarjan算法,多写几题,弄成模板。...
  • kaisa158
  • kaisa158
  • 2015年10月13日 21:00
  • 316
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1144 Network (Tarjan求割点)
举报原因:
原因补充:

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