Pagini recente » Cod sursa (job #821892) | Cod sursa (job #2001263) | Cod sursa (job #1082343)
#include <cstdio>
using namespace std;
int n,m,c=0,par[100000];
struct varf
{
varf* u;
int x;
}*v[100000];
struct lista
{
lista *u,*a;
int x;
}*p,*poz[100000];
void adaugavecin(int x,int y)
{
varf *p;
p=new varf;
p->u=v[x];
p->x=y;
v[x]=p;
}
void read()
{
freopen("dfs.in","r",stdin);
scanf("%d%d",&n,&m);
int x,y;
while(m)
{
--m;
scanf("%d%d",&x,&y);
--x;--y;
adaugavecin(x,y);
adaugavecin(y,x);
}
}
void parcur(int x)
{
/*if(p==poz[x])
{
p=poz[x]->u;
}
else
{
poz[x]->a->u=poz[x]->u;
poz[x]->u->a=poz[x]->a;
}
poz[x]='\0';
while(v[x])
{
if(poz[v[x]->x]) parcur(v[x]->x);
v[x]=v[x]->u;
}*/
par[x]=1;
while(v[x])
{
if(!par[v[x]->x]) parcur(v[x]->x);
v[x]=v[x]->u;
}
}
void write()
{
freopen("dfs.out","w",stdout);
printf("%d",c);
}
int main()
{
read();
int i;
/*poz[n-1]=new lista;
poz[n-1]->u='\0';
poz[n-1]->x=n-1;
p=poz[n-1];
for(i=n-2;i>=0;--i)
{
poz[i]=new lista;
poz[i]->x=i;
poz[i]->u=p;
p->a=poz[i];
p=poz[i];
}
p->a='\0';*/
for(i=0;i<n;++i)
{
if(!par[i])
{
++c;
parcur(i);
}
}
write();
return 0;
}