Cod sursa(job #2157762)

Utilizator andrei13Paval Andrei andrei13 Data 9 martie 2018 21:33:33
Problema Sortare topologica Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <list>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n,m;
list <int> adj[1111];
int gint[1111];
int q[1111],p;
void rez()
{
    for(int i=1;i<=n;++i)
        if(!gint[i])
    {
        q[++p]=i;
    }
    int i=1;
    while(i<=p)
    {
        int v=q[i];
        list <int> ::iterator it;
        for(it=adj[v].begin();it!=adj[v].end();++it)
        {
            int u=*it;
            gint[u]--;
            if(!gint[u])
                q[++p]=u;
        }
        ++i;
    }
    for(i=1;i<=p;++i)
        g<<q[i]<<' ';
}
int main()
{f>>n>>m;
for(int i=1;i<=m;++i)
{
    int x,y;
    f>>x>>y;
    adj[x].push_back(y);
    gint[y]++;
}
rez();
    return 0;
}