Cod sursa(job #1647018)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 10 martie 2016 18:41:56
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <stack>
#define nmax 50010
using namespace std;

int n,m1,val[nmax],nr;
stack <int> s;
bitset <nmax> viz,parc;
vector<int> m[nmax];

int main()
{
    int nod,i;
    vector<int>::iterator it;
    ifstream t1("sortaret.in");
    ofstream t2("sortaret.out");
    t1>>n>>m1;
    int n1,n2;
    for(;m1;m1--)
    {
        t1>>n1>>n2;
        m[n1].push_back(n2);
        val[n2]++;
    }

    for(i=1;i<=n;i++) if(!val[i]) s.push(i);

    while(!s.empty())
    {
        nod=s.top(); s.pop();
        t2<<nod<<' ';
        for( it=m[nod].begin();it!=m[nod].end();it++)
        {
            val[*it]--;
            if(!val[*it]) s.push(*it);
        }
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}