Pagini recente » Cod sursa (job #1353212) | Cod sursa (job #2711532) | Cod sursa (job #2728778) | Cod sursa (job #1227340) | Cod sursa (job #2697502)
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n , m, cod, a, *c , b;
int sef(int x , int *c)
{
int tata, temp=x, sef;
while(temp != c[temp])
{
temp = c[temp];
}
while(x!=temp)
{
tata = c[x];
c[x] = temp;
x = tata;
}
return x;
}
void unite(int x , int y, int *c)
{
x = sef(x , c);
y = sef(y , c);
c[y] = x;
}
int main()
{
in>>n>>m;
c = (int* )calloc(n+1, sizeof(int));
for(int i=1;i<=n;i++)
{
c[i]=i;
}
for(int i=1;i<=m;i++)
{
in>>cod>>a>>b;
if(cod == 1)
{
if(sef(a, c) != sef(b, c))
{
unite(a , b, c);
}
}
else
{
if(sef(a, c) == sef(b, c))
{
out<<"DA"<<'\n';
}
else
{
out<<"NU"<<'\n';
}
}
}
return 0;
}