Cod sursa(job #1995764)

Utilizator horiacoolNedelcu Horia Alexandru horiacool Data 29 iunie 2017 03:07:22
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");

int N,M;
int p,u,C[50003];

bool viz[50003];

vector <int> v[50003];

void BF()
{
    u = p;
    while( p <= u )
    {
        for(int k = 0 ; k < v[C[p]].size() ; k++)
        {
            if( viz[ v[C[p]][k] ] == false )
            {
                viz[ v[C[p]][k] ] = true;
                C[++u] = v[C[p]][k];
            }
        }
        p++;
    }
    for(int i = 1 ; i <= N ; i++)
        g<<C[i]<<' ';
}

int main()
{
    int x,y;
    f>>N>>M;
    for(int i = 1 ; i <= M ; i++)
    {
        f>>x>>y;
        v[x].push_back(y);
        viz[y] = true;
    }
    for(int i = 1 ; i <= N ; i++)
    {
        if( viz[i] == false )
        {
            viz[i] = true;
            C[++p] = i;
        }
        else
            viz[i] = false;
    }
    BF();
    return 0 ;
}