Cod sursa(job #1419127)

Utilizator BogdanisarBurcea Bogdan Madalin Bogdanisar Data 14 aprilie 2015 19:02:50
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cstring>
#include<queue>

#define ull unsigned long long
#define ll long long
#define FOR(a,b,c) for (int a=b;a<=c; ++a)
#define ROF(a,b,c) for (int a=b;a>=c; --a)

using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int N,M;
int rez[50005];
bool verif[50005];
vector<int> v[50005];

void depth(int);

int main()
{
    f>>N>>M;
    FOR (i,1,M)
    {
        int x,y;
        f>>x>>y;
        v[x].push_back(y);
    }
    FOR (i,1,N)
    if (!verif[i])
        depth(i);
    ROF (i,rez[0],1)
        g<<rez[i]<<' ';
    f.close();g.close();
    return 0;
}

void depth(int nod)
{
    verif[nod]=true;
    vector<int>::iterator it;
    for (it=v[nod].begin();it<v[nod].end();++it)
        if (!verif[*it])
            depth(*it);
    rez[++rez[0]]=nod;
}