#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,ans,index,fat[110],low[110],dfn[110],a[110][110];
bool b[110];
void tarjan(int u, int father){
fat[u]=father;
low[u]=dfn[u]=++index;
for(int i=1;i<=n;i++)
if(a[u][i]){
if(!dfn[i]){
tarjan(i,u);
low[u]=min(low[u],low[i]);
}
else if(father!=i)
low[u]=min(low[u],dfn[i]);
}
}
void count(){
int s=0;
tarjan(1,0);
for(int i=2;i<=n;i++){
int v=fat[i];
if(v==1)s++;
else if(dfn[v]<=low[i])
b[v]=true;
}
if(s>1)b[1]=true;
for(int i=1;i<=n;i++)
if(b[i])ans++;
cout<<ans<<endl;
}
int main(){
int x,t;
while(scanf("%d",&n)&&n){
while(scanf("%d",&x)&&x){
while(getchar()!='\n'){
scanf("%d",&t);
a[x][t]=1;
a[t][x]=1;
}
}
count();
ans=0;
index=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(fat,0,sizeof(fat));
memset(dfn,0,sizeof(dfn));
memset(low,0,sizeof(low));
}
return 0;
}
POJ 1144 Network
最新推荐文章于 2020-08-25 10:03:34 发布