Cod sursa(job #1795872)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 2 noiembrie 2016 21:54:19
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda cerculdeinfo-lectia5-paduri.heap.aib Marime 0.76 kb
#include<stdio.h>
#define MAXN 100001
int id[MAXN];
int v[MAXN];
int reprez(int x)
{
    if(id[x]==x)
    {
        return x;
    }
    return id[x]=reprez(id[x]);
}
int main()
{
    FILE*fin=fopen("disjoint.in","r");
    FILE*fout=fopen("disjoint.out","w");
    int N,M;
    fscanf(fin,"%d%d",&N,&M);
    for(int i=1; i<=N; i++)
    {
        v[i]=i;
        id[v[i]]=v[i];
    }
    for(int i=1; i<=M; i++)
    {
        int cod,x,y;
        fscanf(fin,"%d%d%d",&cod,&x,&y);
        int boss1=reprez(x);
        int boss2=reprez(y);
        switch(cod)
        {
        case 1:
            id[boss1]=boss2;
            break;
        case 2:
            fprintf(fout,"%s\n",boss1==boss2?"DA":"NU");
            break;

        }

    }
}