Cod sursa(job #621173)

Utilizator noname15119Noname noname15119 Data 16 octombrie 2011 18:37:20
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
#include<queue>
#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std;

#define Max 50005

int n,m,timp=0;
vector<int> g[Max];
int sol[Max],color[Max];

void dfs(int nod)
{
 int k,i;
 color[nod]=1;
 for(k=g[nod].size(),i=0;i<k;++i)
    if (!color[g[nod][i]]) 
         dfs(g[nod][i]);
 sol[++timp]=nod;
}

int main(int nrargv, char* argv[])
{
 ifstream f;
 ofstream ff;
 f.open("sortaret.in",ios::in);
 ff.open("sortaret.out",ios::out);
 int i,j;
 f>>n>>m;
 for(;m;--m)
  {
   f>>i>>j;
   g[i].push_back(j);
  }

 for(i=1;i<=n;i++) 
   if (!color[i]) dfs(i);

 for(i=n;i;--i)
   ff<<sol[i]<<" ";
 ff<<"\n";

 f.close();
 ff.close();
 return 0;
}