Cod sursa(job #2423620)

Utilizator lulu1602Pantiru Luana Catalina lulu1602 Data 21 mai 2019 19:09:20
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<stack>
using namespace std;
ifstream fin("sortare.in");
ofstream fout("sortare.out");
int N, M;
vector<int>graf[50005];
int grad[50005];
stack<int>stiva;
void topologie()
{
	for (int i = 1; i <= N; i++)
		if (grad[i] == 0) stiva.push(i);
	while (!stiva.empty())
	{
		int x = stiva.top();
		stiva.pop();
		int l = graf[x].size();
		for (int i = 0; i < l; i++)
		{
			int vecin = graf[x][i];
			grad[vecin]--;
			if (grad[vecin] == 0) stiva.push(vecin);
		}
		fout << x << " ";
	}
}
int main()
{
	fin >> N >> M;
	int a, b;
	for (int i = 0; i < M; i++)
	{
		fin >> a >> b;
		grad[b]++;
		graf[a].push_back(b);
	}
	topologie();
	system("pause");
}