Pagini recente » Cod sursa (job #2822620) | Cod sursa (job #2546181) | Cod sursa (job #2696065) | Cod sursa (job #1781678) | Cod sursa (job #1695227)
#include <iostream>
#include <fstream>
#include <vector>
#define NM 100005
using namespace std;
int p[NM];
void u(int x, int y)
{
while(p[y] != y)
y = p[y];
while(p[x] != x)
x = p[x];
p[y] = x;
}
vector<int> s;
int fi(int x)
{
if(p[x] == x)
{
for(int i = 0; i < s.size(); ++i)
p[s[i]] = x;
s.clear();
return x;
}
else
{
s.push_back(x);
fi(p[x]);
}
}
bool qu(int x, int y)
{
int px = fi(x), py = fi(y);
if(px == py)
return 1;
else
return 0;
}
int main()
{
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, q;
f >> n >> q;
for(int i = 1; i <= n; ++i)
p[i] = i;
for(; q; q--)
{
int t, x, y;
f >> t >> x >> y;
if(t&1)
u(x, y);
else
if(qu(x, y))
g << "DA\n";
else
g << "NU\n";
}
}