Cod sursa(job #1343265)

Utilizator RusuRadurusu radu RusuRadu Data 15 februarie 2015 09:12:07
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
#include<vector>
#include<string.h>
using namespace std;
	ifstream  cin("sortaret.in");
	ofstream cout("sortaret.out");
vector<int> v[50010];
int n,m,a[50010];
int solutie[50010];

	void rezolvare()
{
	
	vector<int>::iterator it;
	for(int i=1;i<=n;++i)
		if( a[i] ==0) 
			solutie[ ++solutie[0] ]=i;
	for(int i=1;i<=n;++i){
		int x=solutie[i];
		for( it=v[x].begin() ; it!=v[x].end() ; ++it ){
			a[*it]--;
			if( a[*it]==0)
				solutie[++solutie[0]]=*it;
		}
	}

}
int main()
{
	int r,p;
	cin>>n>>m;
	for(int i=1;i<=m;++i){
		cin>>r>>p;
		v[r].push_back(p);
	}
	rezolvare();
	
	for(int i=1;i<=n;++i) cout<<solutie[i]<<" ";	
	return 0;
}