Cod sursa(job #2352562)

Utilizator aeliusdincaaelius dinca aeliusdinca Data 23 februarie 2019 13:44:09
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
using namespace std;
ifstream in("disjoint.in");ofstream out("disjoint.out");
int s[100005];
int SUP(int a)
{
    if(s[a]==a)
        return a;
    return s[a]=SUP(s[a]);
}
void UN(int h,int k)
{
    s[h]=SUP(h);
    s[k]=SUP(k);
    s[s[h]]=s[k];
}
int main()
{
    int n,m,c,x,y,i;
    in>>n>>m;
    for(i=1;i<=n;i++)
        s[i]=i;
    for(i=1;i<=m;i++)
    {
        in>>c>>x>>y;
        if(c==1)
            UN(x,y);
        else
            if(SUP(x)==SUP(y))
                out<<"DA"<<'\n';
            else
                out<<"NU"<<'\n';
    }
    return 0;
}