Cod sursa(job #1039519)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 23 noiembrie 2013 10:54:09
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <queue>
#include<cstdlib>
using namespace std;
	
#define NMAX 50001
 
struct nod
{
	int info;
	nod *adrurm;
};

int N, M;
nod *v[NMAX];

void Add (nod *v, nod *sf, int nr)
{
	nod *d;
	if ( !v )
	{
		v = new nod;
		v->info = nr;
		v->adrurm = 0;
		sf = v;
	}
	else
	{
		d = new nod;
		sf->adrurm = d;
		d->info = nr;
		d->adrurm = 0;
		sf = d;
	}
}

void readList (nod *v[NMAX])
{
	nod *p;
    FILE *f = fopen("sortaret.in", "r");
    int i, j;
    fscanf(f, "%d %d", &N, &M);
    while(!feof(f))
    {
        fscanf(f, "%d %d", &i, &j);
        p = new nod;
        p->adrurm = v[i];
        p->info = j;
        v[i] = p;
    }
    fclose(f);

}
int k = 0, result[NMAX], viz[NMAX];
void DFS(int x)
{
	result[k++] = x;
	viz[x] = 1;
	for (nod *i = v[x]; i != NULL; i = i->adrurm)
	{
		if ( !viz[i->info] )
			DFS(i->info);
	}
}

int main()
{
	readList ( v );

	FILE *g = fopen ("sortaret.out", "w");
	DFS(1);

	for (int i = 0; i < k; i++)
	{
		fprintf(g, "%d ", result[i]);
	}

	fclose(g);
	return 0;
}