Cod sursa(job #1501893)

Utilizator FlowerDTSFlorescu Alexandru FlowerDTS Data 13 octombrie 2015 22:26:36
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<iostream>
#include<fstream>
#include<algorithm>
#include<vector>

using namespace std;


ifstream intrare;
ofstream iesire;

bool viz[50001];
vector <int>G[50001];
int n,m,p,x,y,a[50001];

void dfs(int k)
{
	viz[k]=1;
	for(int i=0;i<G[k].size();i++)
		if(viz[G[k][i]]==0)
			dfs(G[k][i]);
	a[++p]=k;
	cout<<p<<" "<<k<<"\n";
}

int main()
{	
	intrare.open("sortaret.in");

	intrare>>n>>m;
	for(int i=0;i<m;i++)
	{
		intrare>>x>>y;
		G[x].push_back(y);
	}	
	intrare.close();

	for(int i=0;i<50001;i++)
		viz[i]=0;

	for(int i=0;i<n;i++)
		if(viz[i]==0)
			dfs(i);
		
	iesire.open("sortaret.out");
	for(int i=p-1;i>=0;i--)
		iesire<<a[i]<<" ";
	iesire.close();

	return 0;
}