Cod sursa(job #397769)

Utilizator UnOrdinaryVyper Boy UnOrdinary Data 17 februarie 2010 14:12:53
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#include <vector>
#define N 50000
#define M 100000
using namespace std;

vector <int> l[N],ord;
int viz[N],n,m;


void dfs(int k)
{
	int i;
	viz[k]=1;
   for (i=0;i<l[k].size();i++)
   	if (viz[l[k][i]]==0) dfs(l[k][i]);
   ord.push_back(k);
}

int main()
{
	int i,x,y;

	ifstream fin ("sortaret.in");
   ofstream fout ("sortaret.out");
   fin>>n>>m;
   for (i=0;i<m;i++)
   {
   	fin>>x>>y;
      x--;
      y--;
      l[x].push_back(y);
   }
   for (i=0;i<n;i++)
   {
   	if (viz[i]==0)
   		dfs(i);
   }
   for (i=ord.size()-1;i>=0;i--)
   	fout<<(ord[i]+1)<<" ";
	fout<<endl;
	return 0;
}