Cod sursa(job #2175498)

Utilizator sandupetrascoPetrasco Sandu sandupetrasco Data 16 martie 2018 17:29:37
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
 
using namespace std;
typedef unsigned long long ll;
typedef pair< int , int > PII;

int n, m, Dad[100100];

int find(int x){
    return (x == Dad[x] ? x : find(Dad[x]));
}

void unite(int x, int y){
    x = find(x);
    y = find(y);
    Dad[x] = y;
}

int main(){
    ifstream cin("disjoint.in");
    ofstream cout("disjoint.out");
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n >> m;
    for (int i = 1; i <= n; i++) Dad[i] = i;

    for (int t, x, y; m; m--){
        cin >> t >> x >> y;
        if (t == 1) unite(x, y);
        else cout << (find(x) == find(y) ? "DA\n" : "NU\n");
    }

    return 0;
}