Cod sursa(job #2150249)

Utilizator raluvladRaluca Vlad raluvlad Data 3 martie 2018 13:09:04
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;
int T[100005];

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

void q1(int x,int y)
{
    int rangx=0, rangy=0;
    while(x!=T[x])
    {
        x=T[x];
        rangx++;
    }
    while(y!=T[y])
    {
        y=T[y];
        rangy++;
    }
    if(rangx<=rangy)
        T[x]=y;
    else
        T[y]=x;
}

void q2(int x,int y)
{
    while(T[x]!=x)
        x=T[x];
    while(T[y]!=y)
        y=T[y];
    if(x==y)
        out<<"DA"<<'\n';
    else
        out<<"NU"<<'\n';
}

int main()
{
    int i,n,m,cod,x,y;
    in>>n>>m;
    for(i=1;i<=n;i++)
        T[i]=i;

    for(i=1;i<=m;i++)
    {
        in>>cod>>x>>y;
        if(cod==1)
            q1(x,y);
        else
            q2(x,y);
    }
    return 0;
}