Cod sursa(job #2134314)

Utilizator problem_destroyer69Daniel Hangan problem_destroyer69 Data 17 februarie 2018 20:29:58
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define ll long long
#define pb push_back
#define INF 1000000005
#define LINF 1000000000000000005
#define MAXN 100005
#define pi pair<int,int>
#define pl pair<ll,ll>
int n,m;
vector <int> g[5005];
int grad[5005];
int ans[5005];
signed main() {
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
fin>>n>>m;
for (int i=1;i<=m;i++){
    int a,b;
    cin>>a>>b;
    g[a].pb(b);
    grad[b]++;
}
for (int i=1;i<=n;i++)
    if (!grad[i]) ans[++ans[0]]=i;
for (int i=1;i<=n;i++){
    int x=ans[i];
    for (auto j:g[x]){
        grad[j]--;
        if (!grad[j]) ans[++ans[0]]=j;
    }
}
for (int i=1;i<=n;i++)
    cout<<ans[i]<<' ';
}