Cod sursa(job #3004773)

Utilizator DevilonnetPescar Denis Devilonnet Data 16 martie 2023 16:31:19
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream>
#include<vector>
#include<algorithm>

using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");

int n,m,C[100001],cerinta;

int find(int nod)
{
    if(C[nod]==nod)
        return nod;
    return C[nod]=find(C[nod]);
}

void unesc(int nod1, int nod2)
{
    if(C[nod1]<C[nod2])
        C[nod2]=C[nod1];    
    else
        C[nod1]=C[nod2];
}

int main()
{
    cin>>n>>m;
    for(int i=1; i<=n; ++i)
        C[i]=i;
    for(int i=1,x,y;i<=m;++i)
        {
            cin>>cerinta>>x>>y;
            if(cerinta==1)
            {
                unesc(x,y);
            }
            else
            if(cerinta==2)
            {
                if(find(x)==find(y))
                    cout<<"DA"<<'\n';
                else  
                    cout<<"NU"<<'\n';
            }
        }
    return 0;
}