Cod sursa(job #2267220)

Utilizator MoldooooooooMoldoveanu Stefan Moldoooooooo Data 23 octombrie 2018 14:31:58
Problema Paduri de multimi disjuncte Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>
#define MaxN 100005
using namespace std;
int List[MaxN], i, N, M;
void Join(int a, int b);
void Test(int a, int b);
int main()
{
    freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);
    scanf("%d%d", &N, &M);
    for(i=1; i<=N; ++i)List[i]=i;
    for(i=1; i<=M; ++i){
        int x, y, z;
        scanf("%d%d%d", &x, &y, &z);
        if(x==1) Join(y, z);
        else Test(y, z);
    }
    return 0;
}
void Join(int a, int b){
    if(List[a]!=List[b]){
        int P=List[b];
        for(int i=1; i<=N; ++i)if(List[i]==P)List[i]=List[a];
    }
    return;
}
void Test(int a, int b){
    if(List[a]==List[b])printf("DA\n");
    else printf("NU\n");
}