Cod sursa(job #878571)

Utilizator robertgbrrobertgbr robertgbr Data 14 februarie 2013 16:00:40
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
//#include <iostream>
#include <cstdio>
#include <vector>
//#include <stack>
#define MAXN 50007
#define MAXM 100007

using namespace std;
bool vizitat[MAXN];
int M,N;
vector<int> mylist[MAXN];
//stack<int> mystack;
int mystack[MAXN];
vector<int> solution;
void DFS(int i,int num){
    vector<int>::iterator it;
    if(!mylist[i].empty()){
        for(it=mylist[i].begin();it!=mylist[i].end();it++){
            if(!vizitat[*it]){
                vizitat[*it]=1;
                num++;
                mystack[num]=*it;
                //mystack.push(*it);
                solution.push_back(*it);
                DFS(*it,num);
                mystack[num]=0;
                num--;
                //mystack.pop();}
        }
    }
}
}
int main()
{
    int x,y;
    FILE *inFile;
    FILE *outFile;
    inFile = fopen("sortaret.in","r");
    outFile= fopen("sortaret.out","w");
    fscanf(inFile,"%d",&N);
    fscanf(inFile,"%d",&M);
    for(int i=1;i<=M;i++){
        fscanf(inFile,"%d",&x);
        fscanf(inFile,"%d",&y);
        mylist[x].push_back(y);
    }
    vizitat[1]=1;
    //mystack.push(1);
    mystack[0]=1;
    solution.push_back(1);
    DFS(1,0);
    vector<int>::iterator ite;
    fprintf(outFile,"1");
    for(ite=solution.begin()+1;ite!=solution.end();ite++){
        fprintf(outFile," %d",*ite);}
    fclose(inFile);
    fclose(outFile);
    return 0;
}