POJ---1144 电话网络

简介: POJ---1144 电话网络

POJ—1144 电话网络

题目描述

20210312220934138.png

输入输出

20210312221037558.png

输入样例

5
5 1 2 3 4
0
6
2 1 3
5 4 6 2
0
0

输出样例

1
2


题意分析

题中的电话交换机就是图中的点,线路双向说明是个无向图.题中至关重要的点也就是图中的割点,一旦出现了问题影响的点也就会有许多个.所以这个题主要是求割点的个数.直接上Tarjan算法,注意输入格式的控制比较特殊.

参考代码


#include<iostream>
#include<set>
#include<string.h>
using namespace std;
const int maxn  = 100 + 10;
int head[maxn],cnt,root;
set<int> s;
struct edge{
  int to,next;
}e[maxn*maxn];
int low[maxn],dfn[maxn],num;
void add(int u,int v){
  e[++cnt].next = head[u];
  e[cnt].to = v;
  head[u] = cnt;
}
void tarjan(int u,int fa){
  dfn[u] = low[u]=++num;
  int count  = 0;
  for(int i = head[u]; i;i=e[i].next){
    int v = e[i].to;
    if(fa==v){
      continue;
    }
    if(!dfn[v]){
      tarjan(v,u);
      low[u] = min(low[u],low[v]);
      if(low[v]>=dfn[u]){
        count++;
        if(u!=root || count > 1){
          s.insert(u);//这里不能使用一个变量做统计,因为可能会出现判断重复的情况,可以使用一个结合,把成立的点加进去,最后统计集合大小即可. 
        }
      }
    }else{
      low[u] = min(low[u],low[v]);
    }
  }
}
void init(){
  memset(head,0,sizeof(head));
  memset(low,0,sizeof(low));
  memset(dfn,0,sizeof(dfn));
  cnt = num  = 0;
  s.clear();
}
int main()
{
  int n,u,v;
  while(cin>>n&&n){//控制每个case 
    init();
    while(cin>>u&&u){
      while(1){
        char ch = getchar();
        if(ch=='\n'){
          break;
        }
        cin>>v;
        add(u,v);
        add(v,u);
      } 
    }
    for(int i = 1; i <= n; i++){
      if(!dfn[i]){
        root = i;
        tarjan(i,0);
      }
    }
    cout<<s.size()<<endl;
  }
  return 0;
}


相关文章
|
17天前
蓝桥杯vip试题 报时助手
蓝桥杯vip试题 报时助手
30 0
|
9月前
P1093 [NOIP2007 普及组] 奖学金(模拟排序)
P1093 [NOIP2007 普及组] 奖学金(模拟排序)
32 0
|
10月前
|
定位技术 C++
洛谷P1600 [NOIP2016 提高组] 天天爱跑步
洛谷P1600 [NOIP2016 提高组] 天天爱跑步
洛谷刷题题解笔记----P1055 [NOIP2008 普及组] ISBN 号码(通过第4第8测试点)
洛谷刷题题解笔记----P1055 [NOIP2008 普及组] ISBN 号码(通过第4第8测试点)
|
数据安全/隐私保护
PTA 1076 Wifi密码 (15 分)
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。
180 0
|
算法 C++
NOIP2007---纪念品分组
NOIP2007---纪念品分组
|
关系型数据库 MySQL 数据库
洛谷题单P3613---寄包柜
洛谷题单P3613---寄包柜
120 0

热门文章

最新文章