Cod sursa(job #2890089)

Utilizator MariusANDMarius-Ionut Andreiasi MariusAND Data 14 aprilie 2022 13:15:43
Problema Sortare topologica Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
const int N=1e5;
int n,m,grad[1001];
vector <int> graf[N+1];
queue <int> coada;


int main()
{
	int x,y,n,vecin;
	f>>n>>m;
	for(int i=1; i<=m; i++)
	{
		f>>x>>y;
		graf[x].push_back(y);
		grad[y]++;
	}
	for(int i=1; i<=n; i++)
	{
		if(grad[i]==0)
			coada.push(i);
	}
	while(!coada.empty())
	{
		int nod=coada.front();
		coada.pop();
		g<<nod<<" ";
		for(auto vecin:graf[nod])
		{
			grad[vecin]--;
			if(grad[vecin]==0)
				coada.push(vecin);
		}
	}
	return 0;
}