Cod sursa(job #937784)

Utilizator CatalinEuCatalin Mihai CatalinEu Data 11 aprilie 2013 00:27:02
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<iostream>
#include<fstream>
#define MAX 100001
using namespace std;
struct nod{
  int data;
  nod *next;
};
int viz[MAX],ok=1,v[MAX];
nod *graf[MAX];
ifstream citire("sortaret.in");
ofstream afisare("sortaret.out");
int dfs(int x){
  nod *p;
  int nr;
  viz[x]=1;
  p=graf[x]->next;
  while(p!=NULL){
    if(viz[p->data]==0){
      dfs(p->data);
    }
    p=p->next;
  }
v[ok]=x;
ok++;
return 0;
}
int main(){
  int noduri,muchii,i,y,x,nr=0;
  citire>>noduri>>muchii;
  nod *nou;
 
  for(i = 1;i <= noduri; i++)
    {
        graf[i]=new nod;
        graf[i]->next=NULL;
    }
  for(i = 1 ;i <= muchii ;i++){
    citire>>x>>y;
    nou=new nod;
    nou->data=y;
    nou->next=graf[x]->next;
    graf[x]->next=nou;
  }
  for(i = 1; i <= noduri; i++)
   // viz[i]=0;
  for(i = 1; i <= noduri; i++)
    if(viz[i]==0){
      nr++;
      dfs(i);
    }
  for(i = ok-1; i >= 1; i--)
    afisare<<v[i]<<" ";
  return 0;
}