Cod sursa(job #1392413)

Utilizator robx12lnLinca Robert robx12ln Data 18 martie 2015 17:25:55
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int t[100005],ra,rb,i,op,a,b,n,m;
int rad(int x){
    while(t[x]>0){
        x=t[x];
    }
    return x;
}
int main(){
    fin>>n>>m;
    memset(t,-1,sizeof(t));
    for(i=1;i<=m;i++){
        fin>>op>>a>>b;
        ra=rad(a);
        rb=rad(b);
        if(op==2){
            if(ra==rb){
                fout<<"DA\n";
            }
            if(ra!=rb){
                fout<<"NU\n";
            }
        }else{
            if(t[ra]<t[rb]){
                t[ra]+=t[rb];
                t[rb]=ra;
            }else{
                t[rb]+=t[ra];
                t[ra]=rb;
            }
        }
    }
    return 0;
}