Cod sursa(job #1269073)

Utilizator bogdan10bosBogdan Sitaru bogdan10bos Data 21 noiembrie 2014 20:35:45
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>

#define INF (1<<30)
#define mod 666013

using namespace std;
int n, m, i, op, x, y, f1, f2, v[100005];

int fth(int x)
{
    if(v[x]==x) return v[x];
    v[x]=fth(v[x]);
    return v[x];
}

int main()
{
    freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(i=1;i<=n;i++)
        v[i]=i;
    while(m--)
    {
        scanf("%d%d%d", &op, &x, &y);
        f1=fth(x);
        f2=fth(y);
        if(op==2)
        {
            if(f1==f2) printf("DA\n");
            else printf("NU\n");
        }
        else
            v[f1]=f2;
    }
    return 0;
}