Cod sursa(job #253780)

Utilizator mihai.cuculiciCuculici Mihail mihai.cuculici Data 6 februarie 2009 12:25:07
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<fstream>
#include<vector>
using namespace std;
#define NMAX 100010
ifstream f ("sortaret.in");
ofstream g ("sortaret.out");
vector <int> A[NMAX];
int viz[NMAX], N, M, x, y, i, nr=0;
typedef struct nod* Nod;
struct nod
{
   int Key;
   Nod Next; 
};

Nod V[NMAX];
Nod p2=NULL,c2=NULL;
void add(Nod &dest, int val)   
{   
    Nod p;   
    p = new nod;   
    p->Key = val;   
    p->Next = dest;   
    dest = p;   
}   

void push(int x)
{
     c2=new nod;
     c2->Key=x;
     if(!p2) c2->Next=NULL;
     else c2->Next=p2;
     p2=c2;
}

void write()
{
     for(c2=p2;c2&&c2->Next;c2=c2->Next) g<<c->Key<<" ";
     g<<"\n";
}

void dfs(int x)
{
     viz[x]=1;
     push(x);
     Nod p;
     for(p=V[x];p;p=p->Next) if(!viz[p->Key]) dfs(p->Key);
}

int main()
{
    f>>N>>M;
    for(i=1;i<=M;i++) f>>x>>y, add(V[x], y), add(V[y], x);
    for(i=1;i<=N;i++) if(!viz[i]) dfs(i);
    write();
    g.close();
    return 0;
}