Cod sursa(job #3131301)

Utilizator DavidAA007Apostol David DavidAA007 Data 19 mai 2023 18:43:24
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include<bits/stdc++.h>
#define mare 1e9
#define mod 998244353
#define FAST ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
long long int T,n,m,k,i,j,aux,a,b,minn,contor,suma,poz;
int v[200005],rad[100005],card[100005];
void unire(int x, int y)
{
    if(card[x]<card[y])
        swap(x,y);
    rad[y]=x;
    card[x]+=card[y];
}
int cautare(int x)
{
    if(rad[x]==x)
        return x;
    rad[x]=cautare(rad[x]);
    return rad[x];
}
int main()
{
    FAST
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        rad[i]=i;
        card[i]=1;
    }
    for(i=1;i<=m;i++)
    {
        fin>>T>>a>>b;
        if(T==1)
        {
            unire(cautare(a),cautare(b));
        }
        if(T==2)
        {
            if(cautare(a)==cautare(b))
            {
                fout<<"DA\n";
            }
            else
                fout<<"NU\n";
        }
    }
    return 0;
}