Pagini recente » Cod sursa (job #1340024) | Cod sursa (job #1060126) | Cod sursa (job #2541696) | Cod sursa (job #1721854) | Cod sursa (job #3338319)
#include <fstream>
using namespace std;
const int NMAX=100000;
int T[NMAX+1], Sz[NMAX+1];
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int Find(int i)
{
if(T[i]==0)
return i;
return T[i]=Find(T[i]);
}
void Union(int cx, int cy)
{
if(Sz[cx]<Sz[cy])
{
T[cx]=cy;
Sz[cy]+=Sz[cx];
}
else
{
T[cy]=cx;
Sz[cx]+=Sz[cy];
}
}
int main()
{
int N, M, op, x, y, cx, cy;
f>>N>>M;
for(int i=1; i<=N; i++)
Sz[i]=1;
while(M--)
{
f>>op>>x>>y;
cx=Find(x);
cy=Find(y);
if(op==1)
{
// if(cx!=cy)
Union(cx, cy);
}
else
{
if(cx==cy)
g<<"DA\n";
else
g<<"NU\n";
}
}
f.close();
g.close();
return 0;
}