Pagini recente » Cod sursa (job #19803) | Cod sursa (job #504884) | Cod sursa (job #1395619) | Cod sursa (job #2395526) | Cod sursa (job #1197174)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("dfs.in");
ofstream cout("dfs.out");
typedef struct celula {
int nod;
celula *next;
}*lista;
void add(int val, lista &p)
{
lista r;
r= new celula;
r->nod=val;
r->next=p;
p=r;
}
void dfs ( int nod,int viz[],lista lda[] )
{
viz[nod]=1;
for (lista r=lda[nod];r;r=r->next)
if (viz[r->nod]==0) dfs(r->nod,viz,lda);
}
int main()
{
lista v,lda[100000];
int viz[100000],i,n,j,m,a,b,nr;
cin>>n>>m;
memset(lda,0,sizeof(lda));
memset(viz,0,sizeof(viz));
for (i=1;i<=m;i++) {
cin>>a>>b;
add(a,lda[b]);
add(b,lda[a]);
}
for (i=1;i<=n;i++)
if ( viz[i]==0 ) {
nr+=1;
dfs(i,viz,lda);
}
cout<<nr;
return 0;
}