Cod sursa(job #1789370)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 26 octombrie 2016 22:08:39
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 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[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);
        switch(cod)
        {
        case 1:
            id[x]=reprez(y);
            break;
        case 2:
            fprintf(fout,"%s\n",id[x]==id[y]?"DA":"NU");

        }

    }
}