Cod sursa(job #2173844)

Utilizator perpetuumdoloreelodia ghinescu perpetuumdolore Data 16 martie 2018 08:54:17
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("disjoint.in");
ofstream out ("disjoint.out");
int T,N,M,D[100005],x,y;
int daddy(int j)
{
    if(D[j]==j) return j;
    return D[j]=daddy(D[j]);
}
void unite(int x,int y)
{
    D[daddy(x)] = daddy(y);
}
bool same (int x,int y)
{
    return (daddy(x)==daddy(y));
}
int main()
{
    in>>N>>M;
    for(int i = 1; i <= N; ++i) D[i] = i;
    for(int i = 1; i <= M; ++i){
        in>>T>>x>>y;
        if(T == 1) unite(x,y);
        else {
            if(same(x,y)) out<<"DA\n";
            else out<<"NU\n";
        }
    }
    return 0;
}