Cod sursa(job #3368205)

Utilizator Iustin.DDragusanu Iustin Iustin.D Data 13 octombrie 2026 15:34:18
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
using namespace std;

ifstream cin("disjoint.in");
ofstream cout("disjoint.out");

#define int long long

int pr[100005],sz[100005];

signed main()
{
   int n,m;
   cin>>n>>m;
   for (int i=1; i<=n; i++) pr[i]=i,sz[i]=1;
   for (int i=1; i<=m; i++)
   {
      int cer,x,y;
      cin>>cer>>x>>y;
      if (cer==1)
      {
         while (pr[x]!=x) x=pr[x];
         while (pr[y]!=y) y=pr[y];
         if (sz[x]<sz[y])
         {
            pr[x]=y;
            sz[y]+=sz[x];
            sz[x]=0;
         }
         else
         {
            pr[y]=x;
            sz[x]+=sz[y];
            sz[y]=0;
         }
      }
      else
      {
         while (pr[x]!=x) x=pr[x];
         while (pr[y]!=y) y=pr[y];
         if (x==y) cout<<"DA\n";
         else cout<<"NU\n";
      }
   }
}