Pagini recente » Cod sursa (job #1021293) | Cod sursa (job #1443753) | Cod sursa (job #502366) | Cod sursa (job #811603) | Cod sursa (job #2697818)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int NMAX = 100000;
int v[NMAX + 5], siz[NMAX + 5];
int Find(int x)
{
if(v[x] == x)
return x;
x = Find(v[x]);
}
void Unite(int x, int y)
{
y = Find(y);
x = Find(x);
if(siz[x] > siz[y])
{
siz[y] += siz[x];
v[x] = y;
}
else
{
siz[x] += siz[y];
v[y] = x;
}
}
bool Check(int x, int y)
{
if(Find(x) == Find(y))
return 1;
return 0;
}
int main()
{
int n, m;
fin >> n >> m;
for(int i = 1; i <= n; i++)
{
v[i] = i;
siz[i] = 1;
}
for(int i = 0; i < m; i++)
{
int t, x, y;
fin >> t >> x >> y;
if(t == 1)
{
Unite(x, y);
}
else
{
if(Check(x, y))
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}