Cod sursa(job #3335957)

Utilizator a_violetaAvram Violeta-Iulia a_violeta Data 23 ianuarie 2026 22:00:58
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

int main() {
	
	int n, m, x, y;
	fin >> n >> m;

	vector<vector<int>> adj_list(n + 1, vector<int>());//nod
	vector<int> grade_interne(n + 1, 0);
	queue<int> coada;

	for (int i = 1; i <= m; i++) {
		fin >> x >> y;
		adj_list[x].push_back(y);
		grade_interne[y]++;
	}

	for (int i = 1; i <= n; i++) {
		//cout << grade_interne[i]<<" ";
		if (!grade_interne[i])
			coada.push(i);
	}

	while (!coada.empty()) {
		int nod = coada.front();//cred ca si varianta cu back e corecta
		coada.pop();
		for (auto v : adj_list[nod]) {
			grade_interne[v]--;
			if (grade_interne[v] == 0)
				coada.push(v);
		}
		fout << nod << " ";
		grade_interne[nod] = -1;//ca sa fie ignorat la urmatoarele verificari
	}

	return 0;
}