Cod sursa(job #2504388)

Utilizator ArmivioIlas Armand Viorel Armivio Data 4 decembrie 2019 21:17:40
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
#define NMAX 50005
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int nr[NMAX],n,m;
queue <int> sol;
vector <int> graph[NMAX];
vector<int>::iterator it;//iterator folosit pentru parcurgerea vectorului
int main()
{
    f>>n>>m;
    int i,x,y,sus;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        graph[x].push_back(y);// y succede lui x
        nr[y]++;
    }
    for(i=1;i<=n;i++)
    {
        if(!nr[i]) sol.push(i);
    }
    while(!sol.empty())
    {
        sus=sol.front();
        g<<sus<<' ';
        sol.pop();
        for (it = graph[sus].begin(); it != graph[sus].end(); ++it)
        {
         //   cout << ' ' << *it;
            nr[*it]--;
            if(!nr[*it])//daca nu mai are ascendent yays
                sol.push(*it);
        }
    }
    return 0;
}