#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
using namespace std;
#define siz 105
vector <int> vec[siz];
bool color[siz];
int N,E;
void reset(){
for(int i=0;i<=N;i++){
color[i]=false;
vec[i].clear();
}
}
void dfs(int n, int off){
color[n]=true;
for(int i=0;i<vec[n].size();i++){
int v=vec[n][i];
if(color[v]==false&&v!=off){
dfs(v,off);
}
}
}
int criticalCheck(int off){
for(int i=1;i<=N;i++){
if(color[i]==false&&i!=off){
return 1;
}
}
return 0;
}
int main()
{
int u,v;
//freopen("input.txt","r",stdin);
while(scanf("%d%d",&N,&E)==2){
reset();
for(int i=0;i<E;i++){
scanf("%d%d",&u,&v);
vec[u].push_back(v);
vec[v].push_back(u);
}
int res=0;
memset(color,false,sizeof(color));
dfs(2,1);
res+=criticalCheck(1);
for(int i=2;i<=N;i++){
memset(color,false,sizeof(color));
dfs(1,i);
res+=criticalCheck(i);
}
cout<<res<<endl;
}
return 0;
}
Friday, November 9, 2012
Articulation Point
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment