Cod sursa(job #2682095)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 7 decembrie 2020 19:14:26
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin  ("disjoint.in");
ofstream fout ("disjoint.out");

int n, m, tip, a, ra, b, rb;
int t[100005];

int r(int nod){
    while(t[nod] > 0)
        nod=t[nod];
    return nod;
}

int main(){
    fin>>n>>m;
    for(int i=1; i<=n; i++)
        t[i]=-1;

    for(int i=1; i<=m; i++){
        fin>>tip>>a>>b;
        ra=r(a);
        rb=r(b);

        if(tip == 1)
            if(-t[ra] >= -t[rb]){
                t[ra]+=t[rb];
                t[rb]=ra;
            }else{
                t[rb]+=t[ra];
                t[ra]=rb;
            }
        else
            if(ra == rb)
                fout<<"DA\n";
            else
                fout<<"NU\n";
    }

    return 0;
}