Cod sursa(job #409618)

Utilizator victor_bla_blaDumitrescu Victor victor_bla_bla Data 3 martie 2010 19:29:54
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<vector>
//#include<algorithm>
#define NMAX 50003
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector<int>A[NMAX];
struct noduri{int n; int t2;} nod[NMAX];
int n,m,i,x,y,j,t,vz[NMAX];
vector<int>L;
void dfs(int);
int condsort(noduri,noduri);
int main()
{
	fin>>n>>m;
	for (i=1;i<=m;i++)
	{
		fin>>x>>y;
		A[x].push_back(y);
	}
	for (i=1;i<=n;i++)
		nod[i].n=i;
	t=1; //0-ALB 1-GRI 2-NEGRU
	for (i=1;i<=n;i++)
		if (!vz[i])
			dfs(i);
	//sort(nod+1,nod+n+1,condsort);
	for (i=L.size()-1;i>=0;i--)
		fout<<L[i]<<' ';
	
fout.close();
return 0;}
void dfs(int x)
{int i;
	vz[x]=1;
	for (i=0;i<A[x].size();i++)
		if (!vz[A[x][i]]) 
		{
			++t;
			dfs(A[x][i]);
		}
	++t; 
	nod[x].t2=t; 
	L.push_back(x); 
}
//int condsort(noduri x, noduri y){if (x.t2>y.t2) return 1; return 0;}