Cod sursa(job #1775389)

Utilizator ZeratulVeress Szilard Zeratul Data 10 octombrie 2016 12:31:00
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
//#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

#define FOR(i,k,v) for(i = k; i <= v; i++)

using namespace std;

int n,m,i,j,x,y,now,meret;
bool van[50001];
queue <int> c;

class pont
{
public:
    int bef;
    vector <int> ki;
}t[50001];

int main()
{
    ifstream be("sortaret.in");
    ofstream cout("sortaret.out");
    be>>n>>m;

    FOR(i,1,m)
    {
        be>>x>>y;
        van[y] = true;
        t[y].bef++;
        t[x].ki.push_back(y);
    }

    FOR(i,1,n)
    {
        if(!van[i])
        {
            c.push(i);
            van[i] = true;
        }

    }

    while(!c.empty())
    {
        now = c.front();
        c.pop();
        cout<<now<<" ";
        meret = t[now].ki.size();
        FOR(i,0,meret-1)
        {
            t[t[now].ki[i]].bef--;
            if(t[t[now].ki[i]].bef == 0)
            {
                c.push(t[now].ki[i]);
            }
        }
    }


    return 0;
}