Pagini recente » Cod sursa (job #379951) | Cod sursa (job #162295) | Cod sursa (job #1553196) | Cod sursa (job #4273) | Cod sursa (job #2092003)
#include<stdio.h>
#define MAXV 50000
#define MAXE 100000
void dfs(int nod);
FILE*fin,*fout;
int lista[MAXV+1],next[MAXE+1],val[MAXE+1];
int sol[MAXV+1],ult=0;
bool viz[MAXV+1];
int main()
{
fin=fopen("sortaret.in","r");
fout=fopen("sortaret.out","w");
int V,E;
fscanf(fin,"%d%d",&V,&E);
for(int i=1;i<=E;i++)
{
int u,v;
fscanf(fin,"%d%d",&u,&v);
val[i]=v;
next[i]=lista[u];
lista[u]=i;
}
for(int i=1;i<=V;i++)
{
if(!viz[i])
{
dfs(i);
}
}
for(int i=ult;i>=1;i--)
{
fprintf(fout,"%d ",sol[i]);
}
fclose(fin);
fclose(fout);
return 0;
}
void dfs(int nod)
{
int p=lista[nod];
while(p!=0)
{
int vec=val[p];
if(!viz[vec])
{
viz[vec]=1;
dfs(vec);
}
p=next[p];
}
sol[++ult]=nod;
}