Cod sursa(job #2303519)

Utilizator SchnitzelMannPavaloiu Gabriel SchnitzelMann Data 16 decembrie 2018 14:31:35
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("a.in");
//ofstream out("bibel.out");
int gr[100002],a[100002];
int g(int nr)
{
    if(gr[nr]!=nr)
        gr[nr]=g(gr[nr]);
    return gr[nr];
}
int main()
{
    int n,m,nr1,nr2,t;
    in>>n>>m;
    for(t=1;t<=n;t++)
        gr[t]=t;
    while(m--)
    {
        in>>t>>nr1>>nr2;
        if(t==1)
        {
            if(a[g(nr1)]>a[g(nr2)])
            {
                gr[gr[nr2]]=gr[nr1];
                a[gr[nr1]]+=a[gr[nr2]]+1;
            }
            else
            {
                gr[gr[nr1]]=gr[nr2];
                a[gr[nr2]]+=a[gr[nr1]]+1;
            }
        }
        else if(g(nr1)==g(nr2))
            cout<<"DA\n";
        else
            cout<<"NU\n";
     }
    return 0;
}