Pagini recente » Cod sursa (job #285048) | Cod sursa (job #1675829) | Cod sursa (job #2752709) | Cod sursa (job #2869703) | Cod sursa (job #275583)
Cod sursa(job #275583)
#include<stdio.h>
typedef struct nod
{
int inf;
nod * urm;
} *pnod;
pnod v[100001];
int n,m,viz[100001],k;
void add(pnod &p,int j)
{
pnod q;
q=new nod;
q->inf=j;
q->urm=p;
p=q;
}
void read()
{
int i,l,j;
scanf("%d %d",&n,&m);
for(l=1;l<=m;++l){
scanf("%d %d",&i,&j);
add(v[i],j);
//add(v[j],i);
}
}
void DFS(int x)
{
pnod p;
viz[x]=1;
for(p=v[x];p!=NULL;p=p->urm)
if(!viz[p->inf])
DFS(p->inf);
}
void DFS1 (int x)
{
pnod p;
viz[x]=1;
printf("%d ",x);
for(p=v[x];p!=NULL;p=p->urm)
if(!viz[p->inf])
DFS(p->inf);
}
int main()
{
int i;
freopen("ctc.in","r",stdin);
freopen("ctc.out","w",stdout);
read();
for(i=1;i<=n;++i)
if(!viz[i]){
DFS(i);
k++;
}
printf("%d\n",k);
for(i=1;i<=n;++i)
viz[i]=0;
for(i=1;i<=n;++i0{
if(!viz[i])
DFS1(i);
printf("\n");
}
fcloseall();
return 0;
}