Cod sursa(job #1605780)

Utilizator AntoniooMacovei Antonio Antonioo Data 19 februarie 2016 15:00:14
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> v[100001];
int vec[100001];
int main()
{
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    int n,m,i,cod,y,x,k;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++) {
        vec[i] = i;
        v[i].push_back(i);
    }
    for(k=1;k<=m;k++) {
        scanf("%d%d%d",&cod,&x,&y);
        if(cod == 1) {
            if(v[x].size() < v[y].size()) {
                swap(x,y);
            }
            for(i=v[y].size()-1; i>=0; i--) {
                vec[v[y][i]] = x;
                v[vec[x]].push_back(v[y][i]);
                v[y].pop_back();
            }
        }
        else if(cod == 2) {
            if(vec[x]==vec[y])
                printf("DA\n");
            else printf("NU\n");
        }
    }
    return 0;
}