Cod sursa(job #2722796)

Utilizator Rares31100Popa Rares Rares31100 Data 13 martie 2021 12:11:49
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("sortaret.in");
ofstream out("sortaret.out");
int n, m;
int vf[100001], urm[100001], last[50001];

void adaugaVf(int from, int to)
{
	static int poz = 0;
	vf[++poz] = to;
	urm[poz] = last[from];
	last[from] = poz;
}

int sortTop[50001];
bitset <50001> viz;

void sortareTop(int nod = 1)
{
	static int poz = n;
	viz[nod] = 1;
	
	for(int k = last[nod]; k; k = urm[k])
		if(viz[vf[k]] == 0)
			sortareTop(vf[k]);
	
	sortTop[poz--] = nod;
}

int main()
{
	in >> n >> m;
	
	for(int k = 1, i, j; k <= m; k++)
	{
		in >> i >> j;
		adaugaVf(i, j);
	}
	
	sortareTop();
	
	for(int i = 1; i <= n; i++)
		out << sortTop[i] << ' ';
		
	return 0;
}