Cod sursa(job #2423696)

Utilizator bazycristi21Bazavan Cristian bazycristi21 Data 21 mai 2019 21:08:56
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");

int main()
{
    int n,m;
    in>>n>>m;
    vector <vector<int>> Graf(n+1);
    vector <int> comp(n+1);
    for(int i=1;i<=n;i++)
    {
        Graf[i].push_back(i);
        comp[i]=i;
    }
    for(int i=1;i<=m;i++)
    {
        int tip,x,y;
        in>>tip>>x>>y;
        if(tip==1)
        {
            x=comp[x];
            y=comp[y];
            if(Graf[x].size()>Graf[y].size())
                swap(x,y);
            for(auto j: Graf[x])
            {
                Graf[y].push_back(j);
                comp[j]=y;
                j=0;
            }
        }
        if(tip==2)
        {
            if(comp[x]==comp[y])
                out<<"DA"<<"\n";
            else
                out<<"NU"<<"\n";
        }
    }




}