Pagini recente » Cod sursa (job #2427100) | Cod sursa (job #776405) | Cod sursa (job #2173272) | Cod sursa (job #2618903) | Cod sursa (job #2507195)
#include <fstream>
using namespace std;
int t[100001],niv[100001];
int f(int x)
{
int y=x,i;
while (t[y])
y=t[y];
while(t[x])
{
i=t[x];
t[x]=y;
x=i;
}
return y;
}
void u(int x, int y)
{
int r1=f(x);
int r2=f(y);
if (r1!=r2)
{
if (niv[r1]==niv[r2])
{
t[r1]=r2;
niv[r2]++;
}
else if (niv[r1]>niv[r2])
t[r2]=r1;
else
t[r1]=r2;
}
}
int main()
{
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int n,m,p,x,y;
fin>>n>>m;
for (int i=1;i<=m;i++)
{
fin>>p>>x>>y;
if (p==2)
if (f(x)==f(y))
fout<<"DA\n";
else
fout<<"NU\n";
else u(x,y);
}
return 0;
}