Pagini recente » Cod sursa (job #1466784) | Cod sursa (job #2438648) | Cod sursa (job #1106214) | Cod sursa (job #979685) | Cod sursa (job #1165328)
#include <cstdio>
#include <vector>
FILE* in;
FILE* out;
const int Q=100001;
std::vector<int> f[Q];
int nrnod,nrarc;
bool gasit[Q];
void dfs(int nod)
{
gasit[nod]=1;
for(int i=0; i<f[nod].size(); i++)
{
if(gasit[f[nod][i]]==0)
{
dfs(f[nod][i]);
}
}
}
int main()
{
in=fopen("dfs.in","r");
out=fopen("dfs.out","w");
fscanf(in,"%d%d",&nrnod,&nrarc);
if(nrarc==nrnod*(nrnod+1)/2)
{
fprintf(out,"1");
return 0;
}
int a,b;
for(int i=1; i<=nrarc; i++)
{
fscanf(in,"%d%d",&a,&b);
f[a].push_back(b);
f[b].push_back(a);
}
int rez=0;
for(int i=1; i<=nrnod; i++)
{
if(gasit[i]==0)
{
rez++;
dfs(i);
}
}
fprintf(out,"%d",rez);
return 0;
}