Pagini recente » Cod sursa (job #2166716) | Cod sursa (job #1779401) | Cod sursa (job #191965) | Cod sursa (job #66501) | Cod sursa (job #2194153)
#include <stdio.h>
#include <bitset>
#include <deque>
using namespace std;
FILE *f,*g;
int start[100002],t[3][400004];
bitset <100002>viz;
deque <int> q;
int ss,m,n;
void dfs(int nod)
{
int no;
viz[nod]=1;
no=start[nod];
while(no)
{
if(!viz[t[0][no]])
dfs(t[0][no]);
no=t[1][no];
}
}
void noduri()
{
int i;
for(i=1;i<=n;++i)
{
if(viz[i]==0)
{
++ss;
dfs(i);
}
}
}
int main()
{
int i,j,o,k=0,nod,no;
f=fopen("dfs.in","r");
g=fopen("dfs.out","w");
fscanf(f,"%d %d",&n,&m);
for(o=1;o<=m;++o)
{
fscanf(f,"%d %d",&i,&j);
++k;
t[0][k]=j;
t[1][k]=start[i];
start[i]=k;
++k;
t[0][k]=i;
t[1][k]=start[j];
start[j]=k;
}
noduri();
fprintf(g,"%d",ss);
fclose(f);
fclose(g);
return 0;
}