Pagini recente » Cod sursa (job #3215840) | Cod sursa (job #2177776) | Cod sursa (job #1446331) | Cod sursa (job #389974) | Cod sursa (job #886564)
Cod sursa(job #886564)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int T[100005],Rang[100005],n,m,i,op,x,y;
int rad(int x)
{
int R,y;
for(R=x;T[R]!=R;R=T[R]);
while(x!=T[x])
{
y=T[x];
T[x]=R;
x=y;
}
return R;
}
void uneste(int x, int y)
{
if(Rang[x]>Rang[y])
T[y]=x;
else
T[x]=y;
if(Rang[x]==Rang[y])
Rang[y]++;
}
int main()
{
f >> n >> m;
for(i=1;i<=n;i++)
{
T[i]=i;
Rang[i]=1;
}
for(i=1;i<=m;i++)
{
f >> op >> x >> y;
if(op==2)
{
if(rad(x)==rad(y))
g << "DA" << '\n';
else
g << "NU" << '\n';
}
else
uneste(rad(x),rad(y));
}
f.close();
g.close();
return 0;
}