Cod sursa(job #2281518)

Utilizator DdariusDarius Ddarius Data 12 noiembrie 2018 13:46:21
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#define dm 100005

using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");

int n, m, v[dm], a, x, y;

int parinte(int x)
{
    if(v[x]==x)
        return x;
    else
        return v[x]=parinte(v[x]);
}
void ad(int x, int y)
{
    v[parinte(x)]=parinte(y);
}

int main()
{
    f>>n>>m;
    for(int i=1; i<=n; i++)
        v[i]=i;
    for(int i=1; i<=m; i++)
    {
        f>>a>>x>>y;
        if(a==1)
        {
            ad(x, y);
        }
        if(a==2)
            if(parinte(x)==parinte(y))
                g<<"DA"<<endl;
            else
                g<<"NU"<<endl;
    }
//    for(int i=1; i<=n; i++)
//    {
//        cout<<i<<' '<<parinte(i)<<endl;
//    }
    return 0;
}