Cod sursa(job #2859019)

Utilizator bodox234Buga Bogdan bodox234 Data 28 februarie 2022 19:03:09
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f ("disjoint.in");
ofstream g ("disjoint.out");
int n,m,max_conex,T[32001],H[32001];
int Radacina(int k)
{ while(k!=T[k]) k=T[k];
    return k;
}
void Unire(int x, int y)
{ T[x]=y; }
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
        {T[i]=i; H[i]=1;}
    while(m--)
    { int op,x,y;
      f>>op>>x>>y;
      if(op==1)
        {int rx=Radacina(x);
         int ry=Radacina(y);
         if(rx!=ry)
            { if(H[rx]>H[ry])
                { T[ry]=rx;
                  H[rx]+=H[ry];
                }
                else
                    { T[rx]=ry;
                      H[ry]+=H[rx];
                    }
            }
        }
      if(op==2)
        { if(Radacina(x)==Radacina(y)) g<<"DA\n"; else g<<"NU\n";}
    }
    f.close();g.close(); return 0;
}