Pagini recente » Cod sursa (job #2616255) | Cod sursa (job #1215434) | Cod sursa (job #1154861) | Cod sursa (job #1017782) | Cod sursa (job #1266735)
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int n,m,conexe;
char vizitat[100001];
struct nod
{
int val;
struct nod *urm;
};
struct nod *vecini[100001];
void dfs(int nod)
{
struct nod *p;
p=vecini[nod];
while(p){
if(vizitat[p->val]!='1'){ vizitat[p->val]='1'; dfs(p->val); }
p=p->urm;
}
}
int main()
{
freopen("dfs.in","r",stdin);
freopen("dfs.out","w",stdout);
scanf("%d %d",&n,&m);
struct nod *a;
int dim=sizeof(struct nod);
int x,y;
for(int i=1; i<=m; i++)
{
scanf("%d %d",&x,&y);
a=(struct nod*)malloc(dim);
a->urm=vecini[x];
a->val=y;
vecini[x]=a;
}
for(int i=1; i<=n; i++)
if(vizitat[i]!='1'){ conexe++; vizitat[i]='1'; dfs(i); }
printf("%d",conexe);
return 0;
}