Pagini recente » Cod sursa (job #357454) | Cod sursa (job #1397432) | Cod sursa (job #1654308) | Cod sursa (job #123449) | Cod sursa (job #2882958)
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int a[100020], b[100020];
int gasit(int x)
{
int r, y;
for (r = x; a[r] != r;r = a[r]);
return r;
}
void uni(int x, int y)
{
if (b[x] > b[y])
a[y] = x;
else a[x] = y;
if (b[x] == b[y]) b[y]++;
}
int n,m;
int main()
{
f>>n>>m;
int i, x, y, cd;
for (i = 1; i <= n; i++)
{
a[i] = i;
b[i] = 1;
}
for (i = 1; i <= m; i++)
{
f>>cd>>x>>y;
if (cd == 2){
if (gasit(x) == gasit(y))
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
else
{
if (gasit(x) != gasit(y))
uni(gasit(x), gasit(y));
}
}
return 0;
}