Pagini recente » Cod sursa (job #2302442) | Cod sursa (job #1355775) | Cod sursa (job #2375368) | Cod sursa (job #2719256) | Cod sursa (job #2274053)
#include <fstream>
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
const int Dim = 1e5 + 5;
int T[Dim],H[Dim],n,m;
int Find(int x) ;
void Union(int i,int j);
int main() {
fin >> n >> m;
for ( int i = 1; i <= n; ++i)
T[i] = i;
int type,x,y;
for ( ; m > 0; --m) {
fin >> type >> x >> y;
if ( type == 1)
{Union(Find(x),Find(y));}
else
if ( Find(x) != Find(y) )
fout << "NU\n";
else
fout << "DA\n";
}
}
void Union(int i,int j) {
if ( H[i] > H[j])
T[j] = i;
else
{ T[i] = j;
if ( H[i] == H[j])
++H[j];
}
}
int Find(int x) {
if ( T[x] == x)
return x;
return T[x] = Find(T[x]);
}