Cod sursa(job #2773553)

Utilizator popescuadrianpopescuadrian popescuadrian Data 7 septembrie 2021 16:57:14
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;
ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");
int grup[100005];
void init (int n)
{
    int i;
    for(i=1;i<=n;i++)
    {
        grup[i]=i;
    }
}
int find (int u)
{
    if(grup[u]==u)
    {
        return u;
    }
    return grup[u]=find(grup[u]);
}
int unire (int u,int v)
{
    u=find(u);
    v=find(v);
    grup[v]=u;
}
int main()
{
    int n,m,i,x,a,b,u,v;
    cin>>n>>m;
    init(n);
    for(i=1;i<=m;i++)
    {
        cin>>x>>a>>b;
        if(x==1)
        {
            unire(a,b);
        }
        else
        {
            u=find(a);
            v=find(b);
            if(u==v)
                cout<<"DA"<<'\n';
            else
                cout<<"NU"<<'\n';
        }
    }
    return 0;
}