Pagini recente » Cod sursa (job #526476) | Cod sursa (job #2404050) | Cod sursa (job #2460401) | Cod sursa (job #2527971) | Cod sursa (job #1250956)
#include <fstream>
#define NMAX 100001
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[NMAX],r[NMAX],N;
void unite (int x, int y)
{
if(r[x]<r[y]) { t[x]=y; return; }
if(r[x]>r[y]) { t[y]=x; return; }
if(r[x]==r[y]) { t[x]=y; r[y]++; }
}
int rad (int x)
{
while(x!=t[x])
x=t[x];
return x;
}
int main()
{
int M,i,x,y,q;
f>>N>>M;
for(i=1;i<=N;i++)
t[i]=i;
while(M--)
{
f>>q>>x>>y;
if(q==1)
unite(rad(x),rad(y));
else
{
if(rad(x)==rad(y)) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
}