Cod sursa(job #3368907)
| Utilizator | Data | 16 octombrie 2026 16:13:08 | |
|---|---|---|---|
| Problema | Sortare topologica | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.92 kb |
#include <bits/stdc++.h>
using namespace std;
int n,m;
vector<int>M[100001];
vector<int>ans;
queue<int>q;
int grad[100001];
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
cin >> n >> m;
while(m--)
{
int x,y;
cin >> x >> y;
M[x].push_back(y);
grad[y]++;
}
for(int i = 1;i<=n;++i)
{
if(grad[i] == 0)
{
q.push(i);
}
}
while(!q.empty())
{
int x = q.front();
ans.push_back(x);
q.pop();
for(auto i : M[x])
{
grad[i]--;
if(grad[i] == 0)
q.push(i);
}
}
for(auto i : ans)
cout << i << " ";
return 0;
}
