Cod sursa(job #3030059)

Utilizator vladxandrewVlad Andrei vladxandrew Data 17 martie 2023 14:36:14
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
#define MAX 101
int n, L[MAX][MAX], lung[MAX], DG[MAX], s[MAX], k;
bool viz[MAX];
void citire()
{
	f >> n;
	int x, y;
	while (f >> x >> y)
	{
		L[x][++lung[x]] = y;
		DG[y]++;
	}
	for (int i = 1; i <= n; ++i)
		sort(L[i] + 1, L[i] + 1 + lung[i]);
	f.close();
}
void DFS(int u)
{
	viz[u] = 1;
	for (int i = 1; i <= lung[u]; ++i)
		if (!viz[L[u][i]])
			DFS(L[u][i]);
	s[++k] = u;
}
int main()
{
	citire();
	/*g << "Liste de adiacenta: ";
	for (int i = 1; i <= n; ++i)
	{
		g << i << ": ";
		for (int j = 1; j <= lung[i]; ++j)
			g << L[i][j] << " ";
		g << endl;
	}
	*/
	for (int i = 1; i <= n; ++i)
		if (!viz[i])
			DFS(i);
	int u = 1;
	while (u <= k)
	{
		g << s[u] << " ";
		u++;
	}
	g.close();
}