Cod sursa(job #3351561)

Utilizator AndreiEsteNebunAndrei Mateescu AndreiEsteNebun Data 20 aprilie 2026 10:54:03
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

string filename = "disjoint";
ifstream fin(filename + ".in");
ofstream fout(filename + ".out");

const int NMAX = 1e5;
int parent[NMAX + 5];

int Find(int x)
{
    if(x==parent[x])
        return x;
    return Find(parent[x]);
}

void unite(int u,int v)
{
    int rootU = Find(u);
    int rootV = Find(v);

    parent[rootU] = rootV;
}

int main()
{
    int n,q;
    fin>>n>>q;
    for(int i=1;i<=n;i++)
    {
        parent[i] = i;
    }
    while(q--)
    {
        int type,u,v;
        fin>>type>>u>>v;
        if(type==1)
        {
            unite(u,v);
        }
        else
        {
            bool ok = (Find(u) == Find(v));
            if(ok==true)
                fout<<"DA\n";
            else
                fout<<"NU\n";
        }
    }
    return 0;
}