Cod sursa(job #1756769)

Utilizator GandalfTheWhiteGandalf the White GandalfTheWhite Data 13 septembrie 2016 17:05:57
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#define N 50000
using namespace std;
struct nod{
           int info;
           nod *urm;
          }*l[N];
int n,pre[N],viz[N],nr;
void read()
{
int m,i,x,y;
nod *p;
freopen("sortaret.in","r",stdin);
scanf("%d%d",&n,&m);
while (m--)
   {
   scanf("%d%d",&x,&y);
   p=new nod;p->info=y;p->urm=l[x];l[x]=p;
   }
}
void dfs(int vf)
{
int i;
nod *p;
viz[vf]=1;
for (p=l[vf];p!=NULL;p=p->urm)
    {
    i=p->info;
    if (!viz[i]) dfs(i);
    }
pre[++nr]=vf;
}
int main()
{
int i;
freopen("sortaret.out","w",stdout);
read();
for (i=1;i<=n;i++)
if (!viz[i]) dfs(i);
for (i=nr;i>0;i--) printf("%d ",pre[i]);
}