Cod sursa(job #649432)

Utilizator FIIBarMazNeaFIIBarcanMaziluNeagu FIIBarMazNea Data 16 decembrie 2011 00:26:58
Problema Componente tare conexe Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>

typedef struct Node{unsigned long info; struct Node *next;}Node;
Node *G[100001];

unsigned long viz[100001];
unsigned long n,m;

void citire()
{
FILE *inf;
inf=fopen("dfs.in","r");
unsigned long i,z,y;
fscanf(inf,"%ldu %ldu",&n,&m);
for(i=1;i<=m;i++)
 {
  fscanf(inf,"%ldu %ldu",&z,&y);
  Node *p;
  if(!(p=(Node*)calloc(1,sizeof(Node)))) return ;
  p->info=y;
  p->next=G[z];
  G[z]=p;
 }
 fclose(inf);
}

void Dfs(unsigned long x,unsigned long contor)
{
Node *p;
viz[x]=contor;
for(p=G[x];p;p=p->next)
      if(!viz[p->info])
      {
      viz[p->info]=contor;
      Dfs(p->info,contor);
      }     
}



int main()
{
unsigned long i;
citire();
unsigned long contor=0,k;

for(i=1;i<=n;i++)
    if(viz[i]==0) { Dfs(i,++contor); }


for(k=1;k<=contor;k++)
{
for(i=1;i<=n;i++) if(viz[i]==k) printf("%d ",i);
printf("\n\n");                      
}

system("pause");    
return 0;    
}