Pagini recente » Cod sursa (job #2030649) | Cod sursa (job #1336307) | Cod sursa (job #2289178) | Cod sursa (job #1548020) | Cod sursa (job #2574480)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int t[NMAX], lg[NMAX];
void uneste ( int x, int y );
int radacina ( int x );
int main()
{
int n, m, i, p, x, y, nr = 0;
fin >> n >> m;
for ( i = 1 ; i <= n ; i++ ) t[i] = i, lg[i] = 1;
while ( m-- )
{
fin >> p >> x >> y;
if ( p == 1 ) uneste ( x, y );
else
{
if ( radacina ( x ) == radacina ( y ) ) fout << "DA" << '\n';
else fout << "NU" << '\n';
}
}
return 0;
}
void uneste ( int x, int y )
{
if ( lg[x] < lg[y] ) lg[x] += lg[y], t[radacina(x)] = radacina ( y );
else lg[y] += lg[x], t[radacina(y)] = radacina ( x );
}
int radacina ( int x )
{
if ( x != t[x] ) t[x] = radacina ( t[x] );
return t[x];
}