Cod sursa(job #363781)

Utilizator andreitheo87Teodorescu Andrei-Marius andreitheo87 Data 14 noiembrie 2009 18:22:14
Problema Paduri de multimi disjuncte Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
#include<iostream>
#include<queue>
using  namespace std;
int n,m;
int ds[100000];
void unionn(int x,int y)
{
    if( x+y%2 == 0 )
    {
        ds[x] = y;
    }
    else{
     ds[y] = x;
    }
}
int get(int x)
{
    if( ds[x] == x ) return x;
    int aux = get(ds[x]);
    ds[x] = aux;
    return aux;
}
int main()
{
	freopen("disjoint.in", "r", stdin);
    freopen("disjoint.out", "w", stdout);
	scanf("%d %d",&n,&m);
	for(int i=0; i<n; i++)
        ds[i] = i;
	for(int i=0; i<m; i++)
	{
		int op,x,y;
		scanf("%d %d %d",&op,&x,&y);
		x--;y--;
		if( op==1 ) unionn(x,y);
		else if( get(x) == get(y) ) printf("DA\n");
            else printf("NU\n");
	}
	return 0;
}