Cod sursa(job #1605781)

Utilizator tgm000Tudor Mocioi tgm000 Data 19 februarie 2016 15:00:44
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<cstdio>
#include<vector>
using namespace std;
vector <int> v[100001];
int vec[100001];
int main(){
    int n,m,tip,x,y,i,aux,j;
    freopen("disjoint.in","r",stdin);
    freopen("disjoint.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++){
        vec[i]=i;
        v[i].push_back(i);
    }
    for(i=1;i<=m;i++){
        scanf("%d%d%d",&tip,&x,&y);
        if(tip==1){
            x=vec[x];
            y=vec[y];
            if(v[x].size()<v[y].size()){
                aux=x;
                x=y;
                y=aux;
            }
            for(j=v[y].size()-1;j>=0;j--){
                vec[v[y][j]]=x;
                v[x].push_back(v[y][j]);
                v[y].pop_back();
            }
        }else if(vec[x]==vec[y])
            printf("DA\n");
        else
            printf("NU\n");
    }
    return 0;
}