Pagini recente » Cod sursa (job #2318670) | Cod sursa (job #3163484) | Cod sursa (job #1317975) | Cod sursa (job #990020) | Cod sursa (job #2660381)
#include <bits/stdc++.h>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n,m;
vector<int> adj[50001];
queue<int> q;
int grade[50001];
void dfs()
{
while(!q.empty())
{
int p = q.front();
q.pop();
for(auto x : adj[p])
{
grade[x]--;
if(!grade[x])
q.push(x);
}
g << p << " ";
}
}
void sortareTopologica()
{
for(int i = 1; i <= n; i++)
if(grade[i] == 0)
q.push(i);
dfs();
}
int main() {
f >> n >> m;
for(int i = 0; i < m; i++)
{
int x, y;
f >> x >> y;
adj[x].push_back(y);
grade[y]++; //pt fiecare muchie destinatie, cresc gradul
}
sortareTopologica();
return 0;
}