Cod sursa(job #2304046)

Utilizator canmihaiCancescu Mihai canmihai Data 17 decembrie 2018 14:08:07
Problema Paduri de multimi disjuncte Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,t,op,x,y,f[100000],a[100000];
int r(int n){
    if(f[n]!=n)
        f[n]=r(f[n]);
    return f[n];
}
int main(){
    fin>>n>>t;
     for(int i=1;i<=n;i++)
        f[i]=i;
    for(int i=1;i<=t;i++){
        fin>>op>>x>>y;
        if(op==1){
             if(a[r(x)]>a[r(y)]){
                f[f[y]]=f[x];
                a[f[x]]+=a[r(y)]+1;
            }
            else{
                f[f[x]]=f[y];
                a[f[y]]+=a[f[x]]+1;
            }

        }
        else if(r(x)==r(y))
            fout<<"DA"<<"\n";
        else
            fout<<"NU"<<"\n";
    }

    return 0;
}