Cod sursa(job #2211119)

Utilizator andaraluca2001Anda Epure andaraluca2001 Data 9 iunie 2018 13:48:49
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;
const int MAX=100000;
int tata[MAX],n,m;

int find_tata(int x)
{
    if(tata[x]==x) return x;
    int ans=find_tata(tata[x]);
    tata[x]=ans;
    return ans;
}
int main()
{
    ifstream cin("disjoint.in");
    ofstream cout("disjoint.out");
    cin>>n>>m;

    for(int i=1;i<=n;i++) tata[i]=i;

    for(int i=1;i<=m;i++)
    {
        int cod,x,y,tx,ty;
        cin>>cod>>x>>y;
        tx=find_tata(x);
        ty=find_tata(y);
        if(cod==1) tata[tx]=ty;
        else
        {
            if(tx==ty) cout<<"DA"<<'\n';
            else cout<<"NU"<<'\n';
        }
    }
    return 0;
}