Cod sursa(job #2289217)

Utilizator SweetHumanAvram Gheorghe SweetHuman Data 24 noiembrie 2018 11:56:14
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f1("disjoint.in");
ofstream f2("disjoint.out");
int tati[100005];

int n,m;

int find(int x){
    int R, y;

    for(R = x; R!=tati[R]; R = tati[R]);

    while(tati[x]!=x){
        y=tati[x];
        tati[x]=R;
        x=y;
    }

    return R;
}

int main() {
    int operatie, x,y;
    f1>>n>>m;
    for(int i=1;i<=n;i++){
        tati[i]=i;
    }
    for(int i=0; i<m;i++){
        f1>>operatie>>x>>y;
        if(operatie == 1){
                tati[find(x)]=tati[find(y)];
        } else
        if(operatie == 2){
            if(tati[find(x)]==tati[find(y)])
                f2<<"DA"<<endl;
            else
                f2<<"NU"<<endl;
        }
    }
    return 0;
}