Cod sursa(job #1692363)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 20 aprilie 2016 19:06:01
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <cstdio>
#define MAXN 100000
int sef[MAXN+1];
int find(int x){
    if(sef[x]==0)
      return x;
    return  sef[x]=find(sef[x]);
}
int main(){
    FILE*fi,*fout;
    int n,m,t,x,y,i;
    fi=fopen("disjoint.in" ,"r");
    fout=fopen("disjoint.out" ,"w");
    fscanf(fi,"%d%d" ,&n,&m);
    for(i=0;i<m;i++){
       fscanf(fi,"%d%d%d" ,&t,&x,&y);
       if(t==1)
          sef[find(x)]=find(y);
       else{
          if(find(x)==find(y))
             fprintf(fout,"DA\n");
          else
             fprintf(fout,"NU\n");
        }
    }
    fclose(fi);
    fclose(fout);
    return 0;
}