Cod sursa(job #153621)

Utilizator sigridMaria Stanciu sigrid Data 10 martie 2008 17:19:52
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.35 kb
#include<stdio.h>   
#define dim 100001   
int comp[dim];   
int main()   
{   
FILE *f=fopen("dfs.in","r");   
FILE *g=fopen("dfs.out","w");   
int n,m;   
int x,y,j,cont=0,i,minim;   
  
fscanf(f,"%d",&n);   
fscanf(f,"%d",&m);   
for(i=1;i<=n;i++) comp[i]=i;   
cont=n;   
for(i=1;i<=m;i++)   
 {fscanf(f,"%d",&x);   
  fscanf(f,"%d",&y);   
  if(comp[x]<comp[y])   
   {minim=comp[y];   
    for(j=1;j<=n;j++)   
     if(comp[j]==minim) comp[j]=comp[x];   
    cont--;   
   }   
   else if(comp[x]>comp[y])   
      {minim=comp[x];   
       for(j=1;j<=n;j++)   
    if(comp[j]==minim) comp[j]=comp[y];   
       cont--;   
      }   
 }   
  
fprintf(g,"%d",cont);   
fprintf(g,"\n");   
return 0;   
}  
#include<stdio.h>
#define dim 100001
int comp[dim];
int main()
{
FILE *f=fopen("dfs.in","r");
FILE *g=fopen("dfs.out","w");
int n,m;
int x,y,j,cont=0,i,minim;

fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
for(i=1;i<=n;i++) comp[i]=i;
cont=n;
for(i=1;i<=m;i++)
 {fscanf(f,"%d",&x);
  fscanf(f,"%d",&y);
  if(comp[x]<comp[y])
   {minim=comp[y];
    for(j=1;j<=n;j++)
     if(comp[j]==minim) comp[j]=comp[x];
    cont--;
   }
   else if(comp[x]>comp[y])
      {minim=comp[x];
       for(j=1;j<=n;j++)
	if(comp[j]==minim) comp[j]=comp[y];
       cont--;
      }
 }

fprintf(g,"%d",cont);
fprintf(g,"\n");
return 0;
}