Cod sursa(job #3293438)

Utilizator tudorhTudor Horobeanu tudorh Data 11 aprilie 2025 17:41:07
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int parent[100001];
int findparent(int n)
{
    vector<int>b;
    while(parent[n]!=n)
    {
        b.push_back(n);
        n=parent[n];
    }
    for(int i=0;i<b.size();i++)
        parent[b[i]]=n;
    return n;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr),cout.tie(nullptr);
    int n,m,t,x,y;
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        parent[i]=i;
    for(int i=1;i<=m;i++)
    {
        fin>>t>>x>>y;
        if(t==1)
        {
            int parinte=findparent(x);
            parent[parinte]=y;
        }
        else
        {
            bool r=(findparent(x)==findparent(y));
            if(r==1)
                fout<<"DA\n";
            else fout<<"NU\n";
        }
    }
    return 0;
}