Cod sursa(job #2050929)

Utilizator draghici_vladDraghici Vlad draghici_vlad Data 28 octombrie 2017 12:15:54
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream f("sortare.in");
ofstream g("sortare.out");

vector <int> l[100000],v;

bool viz[5000005],ok;
int k,u,p,poz,n,s,m,x,y,nr;

void topo(int nod)
{
    int i;
    viz[nod] = 1;
    for(i = 0; i< l[nod].size(); i++)
        if(viz[l[nod][i]] == 0)
            {

                topo(l[nod][i]);
            }
            v.push_back(nod);
}

int main()
{
    f>>n>>m;
    for(int i = 1; i<= m; i++)
    {
        f>>x>>y;
        ok=1;

        for(int j = 0; j < l[x].size() && ok; j++)
            if(l[x][j] == y)
                ok = 0;
        if(ok)
            l[x].push_back(y);
    }

    for(int i=1;i<=n;i++)
        if(viz[i]==0)
            topo(i);

    for(int i=v.size()-1;i>=0;i--)
        g<<v[i]<<' ';
    return 0;
}