Pagini recente » Cod sursa (job #834099) | Cod sursa (job #2334255) | Cod sursa (job #1856345) | Cod sursa (job #1755845) | Cod sursa (job #2696247)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
void pint(int p[], int n)
{
for (int i = 1; i <= n; i ++)
p[i] = i;
}
int sef(int a, int p[])
{
int s = a;
while(p[a]!=a)
a = p[a];
p[s] = a;
return a;
}
void add(int a, int b, int p[])
{
p[sef(b,p)] = sef(a,p);
}
void verf(int a, int b, int p[])
{
while(p[a] != a)
{
a = sef(a,p);
}
while(p[b] != b)
{
b = sef(b,p);
}
if ( a == b )
out << "DA" << '\n';
else
out << "NU" << '\n';
}
int main()
{
int n, op, p[100001], c, a, b;
in >> n >> op;
pint(p,n);
for(int i = 1; i <=op; i ++)
{
in >> c >> a >> b;
if( c == 1 )
add(a,b,p);
else
verf(a,b,p);
}
return 0;
}