Pagini recente » Cod sursa (job #724557) | Cod sursa (job #183997) | Cod sursa (job #100490) | Cod sursa (job #929023) | Cod sursa (job #2842304)
#include <bits/stdc++.h>
#define Dmax 100005
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int T[Dmax],R[Dmax];
int Root(int k)
{
if(T[k]!=k)
{
T[k] = Root(T[k]);
return T[k];
}
else
return k;
}
void Update(int x,int y)
{
if(Root(x)==Root(y))
g<<"DA\n";
else
g<<"NU\n";
}
void Union(int x,int y)
{
int rx = Root(x),ry = Root(y);
if(rx!=ry)
{
if(R[rx] > R[ry])
T[ry] = rx;
else
{
T[rx] = ry;
if(R[rx]==R[ry])
R[ry]++;
}
}
}
int main()
{
int n,m;
f>>n>>m;
for(int i = 1; i <= n; i++)
T[i]=i;
for(int i = 1; i <= m; i++)
{
int p,x,y;
f>>p>>x>>y;
if(p==1)
Union(x,y);
if(p==2)
Update(x,y);
}
return 0;
}