Pagini recente » Cod sursa (job #2823240) | Cod sursa (job #1228254) | Cod sursa (job #126639) | Cod sursa (job #1448151) | Cod sursa (job #2421638)
#if 1
#include <fstream>
using namespace std;
int tata[200005], dist[200005];
fstream f("disjoint.in");
ofstream g("disjoint.out");
void rad(int x) {
if (tata[x] == x)
return x;
return (rad(tata[x]));
}
void unire(int x, int y) {
if (dist[x] < dist[y])
tata[x] = tata[y];
else tata[y] = tata[x];
if (dist[x] == dist[y])
dist[y]++;
}
int main()
{
int n, m, k, i, x, y;
f >> n >> m;
for (i = 1; i <= n; i++)
{
tata[i] = i;
dist[i] = 1;
}
for (i = 0; i < m; i++)
{
f >> k >> x >> y;
if (k == 1)
{
unire(rad(x), rad(y));
}
else if (rad(x) == rad(y))g << "DA" << endl;
else g << "NU" << endl;
}
return 0;
}
#endif