Cod sursa(job #3350205)

Utilizator Bogdan_RuscanuRuscanu Stefan Bogdan Bogdan_Ruscanu Data 6 aprilie 2026 12:26:09
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 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)
{
    while(!multimi[pin2].empty())
    {
        int i=multimi[pin2].back();
        from[i]=pin1;
        multimi[pin1].push_back(i);
        multimi[pin2].pop_back();
    }
}

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;
}