Pagini recente » Cod sursa (job #2350558) | Cod sursa (job #901422) | Cod sursa (job #935983) | Cod sursa (job #2856253) | Cod sursa (job #1425433)
#include <iostream>
#include <deque>
#include <vector>
#include <cstring>
#include <bitset>
#include <algorithm>
#define INF 1000010
#define uint unsigned int
#define ll long long
using namespace std;
int N, M, dad[100010], i, x, y, t;
vector<int> V;
int gaseste(int X)
{
V.clear();
while(dad[X] != X)
{
V.push_back(X);
X = dad[X];
}
for(int i = 0; i < V.size(); i++)
dad[V[i]] = X;
return X;
}
void uneste(int X,int Y)
{
dad[gaseste(X)] = gaseste(Y);
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d", &N, &M);
for(i=1;i<=N;i++)
dad[i] = i;
while(M--)
{
scanf("%d%d%d", &t, &x, &y);
if(t == 1)
uneste(x, y);
else
{
if(gaseste(x) == gaseste(y))
printf("DA\n");
else
printf("NU\n");
}
}
return 0;
}