Pagini recente » Borderou de evaluare (job #1170036) | Cod sursa (job #890087) | Cod sursa (job #1320912) | Cod sursa (job #1072866) | Cod sursa (job #420064)
Cod sursa(job #420064)
#include<stdio.h>
#include<vector>
#define MAXN 100005
using namespace std;
int n,m,i,j,u,nrc,x,y;
int level[MAXN],c[MAXN],v[MAXN];
int stx[MAXN],sty[MAXN];
vector <int> sol[MAXN];
vector <int> a[MAXN];
void adaug(int a,int b)
{
int x,y;
nrc++;
do
{
x=stx[u];
y=sty[u--];
sol[nrc].push_back(y);
}
while(x!=a || y!=b);
sol[nrc].push_back(x);
}
void df(int nod,int tata)
{
int i,nnod;
level[nod]=level[tata]+1;
c[nod]=level[nod];
v[nod]=1;
for(i=0;i<a[nod].size();i++)
{
nnod=a[nod][i];
if(!v[nnod])
{
stx[++u]=nod;
sty[u]=nnod;
df(nnod,nod);
if(c[nnod] < c[nod])
c[nod]=c[nnod];
if(c[nnod] >= level[nod])
nrc++;
}
else
if(nnod!=tata && c[nnod] < c[nod])
c[nod]=c[nnod];
}
}
int main(void)
{
freopen("biconex.in","r",stdin);
freopen("biconex.out","w",stdout);
scanf("%d%d",&n,&m);
while(m--)
{
scanf("%d%d",&x,&y);
a[x].push_back(y);
a[y].push_back(x);
}
df(1,0);
printf("%d\n",nrc);
return 0;
}