Cod sursa(job #2371065)

Utilizator Iulia14iulia slanina Iulia14 Data 6 martie 2019 15:27:39
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>

using namespace std;
ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");
int sef[100005];
int sefsuprem(int x)
{
    if (sef[x]==x)
        return x;
    else
        return sef[x]=sefsuprem(sef[x]);
}
int unire(int x,int y)
{
    int sefsx=sefsuprem(x),sefsy=sefsuprem(y);
    sef[sefsx]=sefsy;
}
int main()
{
    int n,m,i,t,a,b;
    cin>>n>>m;
    for (i=1;i<=n;i++)
        sef[i]=i;
    for (i=1;i<=m;i++)
    {
        cin>>t>>a>>b;
        if (t==1)
            unire(a,b);
        else
        {
            if (sefsuprem(a)==sefsuprem(b))
                cout<<"DA";
            else
                cout<<"NU";
            cout<<endl;
        }
    }
    return 0;
}