Cod sursa(job #2368265)

Utilizator mirceagavrizimircea luca gavrizi mirceagavrizi Data 5 martie 2019 14:54:58
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
using namespace std;
int v[100001];
int sefsuprem(int nr){
    if(v[nr]==nr)
        return nr;
    else
        return v[nr]=sefsuprem(v[nr]);
}
void unire(int a,int b){
    int sefx=sefsuprem(a);
    int sefy=sefsuprem(b);
    v[sefy]=sefx;
}
int main(){
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    int n,m,i,cd,x,y;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        v[i]=i;
    for(i=1;i<=m;i++){
        scanf("%d%d%d",&cd,&x,&y);
        if(cd==2){
            if(sefsuprem(v[x])==sefsuprem(v[y]))
                printf("DA\n");
            else
                printf("NU\n");
        }
        else{
            unire(x,y);
        }
    }
    return 0;
}