Cod sursa(job #3350208)

Utilizator Bogdan_RuscanuRuscanu Stefan Bogdan Bogdan_Ruscanu Data 6 aprilie 2026 12:29:12
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
const int NMAX=100005;

using namespace std;

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

vector<int> multimi[NMAX];
int from[NMAX];

void combine(int pin2,int pin1)
{
    for(auto i: multimi[pin2])
    {
        from[i]=pin1;
        multimi[pin1].push_back(i);
    }
    multimi[pin2].clear();
    multimi[pin2].shrink_to_fit();
}

int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        multimi[i].push_back(i);
        from[i]=i;
    }
    while(m--)
    {
        int tip,x,y;
        cin>>tip>>x>>y;
        if(tip==1)
        {
            combine(from[x],from[y]);
        }
        else
        {
            if(from[x]==from[y]) cout<<"DA"<<endl;
            else cout<<"NU"<<endl;
        }
    }
    return 0;
}