Cod sursa(job #1394399)

Utilizator roberta9533Pavel Roberta roberta9533 Data 20 martie 2015 11:56:39
Problema Paduri de multimi disjuncte Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include<fstream>
#include<cstdio>
using namespace std;

int n,m,i,t[100001],x,y,cod,tx,ty;

int findt(int x)
{
    if(x!=t[x])
        return t[x]=findt(t[x]);
    else return x;
}

void unite(int x,int y)
{
    tx=findt(x);
    ty=findt(y);
    t[tx]=ty;
}

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

    scanf("%d%d",&n, &m);
    for(i=1;i<=n;i++)
        t[i]=i;
    for(i=1;i<=m;i++)
    {
        scanf("%d%d%d", &cod, &x, &y);
        if(cod==1) unite(x,y);
            else if(findt(x)==findt(y)) printf("DA\n");
                        else printf("NU\n");
    }
    return 0;
}