Cod sursa(job #2187458)

Utilizator darkviper17Dark Viper darkviper17 Data 26 martie 2018 15:34:28
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

const int N = 50001;
vector<int> a[N];

int n, m, coada[N], nr, stop[N];
bool viz[N];

void read() {
	int i, x, y;
	fin >> n >> m;

	for (i = 1; i <= m; i++) {
		fin >> x >> y;

		a[x].push_back(y);
	}

}

void dfs_topologic(int nod) {
  int i, y;
	viz[nod] = true;
	
	for(i = 0; i < a[nod].size(); i++)
	{
	  y = a[nod][i];
	  
	  if(!viz[y]) dfs_topologic(y);
	}
	
	stop[++nr] = nod;
}

int main() {
	read();
	
	int i;
	
	for(i = 1; i <= n; i++)
	{
	  if(!viz[i]) dfs_topologic(i);
	}
	
	for(i = nr; i > 0; i--)
	  fout << stop[i] << ' ';

	return 0;
}