Cod sursa(job #1341072)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 12 februarie 2015 13:13:20
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
#include <bitset>
#define DIM 50011
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n,m,k;
int sol[DIM];

vector<int> L[DIM];
bitset<DIM> viz,viz1;

void dfs(int nod){
    vector<int>::iterator it;
    viz[nod]=1;
    sol[++k]=nod;
    for(it=L[nod].begin();it!=L[nod].end();it++){
        if(!viz[*it])
            dfs(*it);
    }
}

int main(void){
    register int i,j,x,y;

    f>>n>>m;
    for(i=1;i<=m;i++){
        f>>x>>y;
        L[x].push_back(y);
        viz1[y]=1;
    }

    for(i=1;i<=n;i++){
        if(!viz[i] && !viz1[i]){
            dfs(i);
        }
    }

    for(i=1;i<=k;i++) g<<sol[i]<<" ";
    f.close();
    g.close();
    return 0;
}