Cod sursa(job #1761019)

Utilizator Juve45UAIC Alexandru Ionita Juve45 Data 21 septembrie 2016 18:12:31
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <vector>

using namespace std;

int n,x, a, b, m[100001],ma,i,j,nr;
bool use[50010];

vector <int> v[100010];

void unesc(int x, int y)
{
    for(int i=0;i<v[x].size();i++)
    {
        v[y].push_back(v[x][i]);
        m[v[x][i]]=y;
    }
}

int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);

    cin>>n>>ma;

    for(int i=0;i<=n;i++)
    {
        v[i].push_back(i);
        m[i]=i;
    }

    for(int i=1;i<=ma;i++)
    {
        cin>>x>>a>>b;
        if(x==2)
        {
            if(m[a]==m[b])
                cout<<"DA\n";
            else cout<<"NU\n";
        }
        else{

            if(v[m[a]].size()<v[m[b]].size())
            {
                unesc(m[a], m[b]);
            }
            else
                unesc(m[b], m[a]);

        }
    }


}