Cod sursa(job #1892530)

Utilizator patrutoiuandreipatrutoiu andrei patrutoiuandrei Data 25 februarie 2017 01:32:12
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>

#define Ndim 100001
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int P[Ndim];
int root(int x)
{
    while(P[x]>0)
        x = P[x];
    return x;
}
int main()
{
    int n,m,i,t,x,y,r1,r2;
    fin>>n>>m;
    for(i=1;i<=n;i++)
        P[i] = -1;
    while(m--)
    {
        fin>>t>>x>>y;
        r1 = root(x);
        r2 = root(y);
        if(t == 1)
        {
            if(P[r1]>P[r2])
                swap(r1,r2);
            P[r1]+=P[r2];
            P[r2] = r1;
        }
        else
        {
            if(r1 == r2)
                fout<<"DA\n";
            else
                fout<<"NU\n";
        }
    }
    return 0;
}