Cod sursa(job #3273957)

Utilizator proflaurianPanaete Adrian proflaurian Data 4 februarie 2025 17:03:16
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int N=100010;
int n,m,T[N];
int getRoot(int nod)
{
    if(nod==T[nod])
        return nod;
    T[nod]=getRoot(T[nod]);
    return T[nod];
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
        T[i]=i;
    for(int i=1;i<=m;i++)
    {
        int x,y,tip;
        f>>tip>>x>>y;
        x=getRoot(x);
        y=getRoot(y);
        while(y!=T[y])y=T[y];
        if(tip==1)///reuniune
            T[x]=y; /// o radacina devine fiul altei radacini - arrborii s-au reunit
        else///interogare
        {
            if(x==y) /// daca am ajuns la aceeasi radacina
                g<<"DA\n";///suntem in aceeasi multime
            else///altfel
                g<<"NU\n";///suntem in multimi diferite
        }
    }
    return 0;
}


R

  - 1
  -
  -  2

      3