Cod sursa(job #1748691)

Utilizator firewavesBirsu Ion firewaves Data 26 august 2016 16:09:22
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <stack>
#include <list>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

#define Nmax  50001
#define Mmax 100001

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

int n, m;
bool values[Nmax];
int *adc[Nmax];
stack <int> st;
int main()
{
    int x, y;
    fin >> n >> m;
    for( int i = 1; i <=n; i++)
        adc[i] = (int*) calloc(1,sizeof(int));

    for(int i = 1; i <=m; i++ )
    {
        fin >> x >> y;
        adc[x] =(int * ) realloc(adc[x],(adc[x][0] + 2) * sizeof(int));
        adc[x][0]++;
        adc[x][adc[x][0]] = y;
    }
    st.push(1);
    while(!st.empty()){
        x = st.top();
        st.pop();
        if(values[x] == false){
            fout << x << " ";
            values[x] = true;
            for(int i = 1; i <= adc[x][0]; i++)
                if(values[adc[x][i]] == false)
                    st.push(adc[x][i]);
        }

    }
    fin.close();
    fout.close();
    return 0;
}