Cod sursa(job #650885)

Utilizator FIIBarMazNeaFIIBarcanMaziluNeagu FIIBarMazNea Data 19 decembrie 2011 03:02:49
Problema Componente tare conexe Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.11 kb
#include<stdio.h>
#include<stdlib.h>
#define NMAX 100003
typedef struct Node{int info; struct Node *next;}Node;
Node *G[NMAX];
FILE *inf,*outf;
int viz[NMAX],N,M;
int succesori[NMAX],predecesori[NMAX];


void citire()
{
inf=fopen("ctc.in","r");
int i,z,y;
fscanf(inf,"%d %d",&N,&M);
for(i=1;i<=M;i++)
 {
  fscanf(inf,"%d %d",&z,&y);
  Node *p;
  if(!(p=(Node*)malloc(sizeof(Node)))) return ;
  p->info=y;
  p->next=G[z];
  G[z]=p;
 }
}

void Dfs1(int x)
{
Node *p;
succesori[x]=1;
for(p=G[x];p;p=p->next)
      if(succesori[p->info]==0)
      {
      
      Dfs1(p->info);
      }     
}

void Dfs2(int x)
{
Node *p;
predecesori[x]=1;
for(p=G[x];p;p=p->next)
      if(predecesori[p->info]==0)
      {
      
      Dfs2(p->info);
      }     
}


int main()
{
int i,contor=0,k,nrcomp=0;

outf=fopen("ctc.out","w");
citire();
succesori[1]=predecesori[1]=1;
Dfs1(1);
Dfs2(1);

for(k=1;k<=contor;k++)
{
for(i=1;i<=N;i++) 
   if(succesori[i]==predecesori[i] && succesori[i]==1) fprintf(outf,"%d ",i);
fprintf(outf,"\n");
}
fclose(inf);
fclose(outf);
return 0;    
}