Pagini recente » Cod sursa (job #2608540) | Cod sursa (job #769568) | Cod sursa (job #2964847) | Cod sursa (job #1617783) | Cod sursa (job #3265056)
#include <fstream>
#pragma GCC optimize ("O4,Ofast")
#pragma GCC optimize ("unroll-loops")
#define int long long
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.cout");
const int Nmax = 1e5 + 5;
int parent[Nmax], sz[Nmax];
int n;
void init()
{
for(int i = 0; i <= n; i ++)
{
parent[i] = i;
sz[i] = 1;
}
}
int findd(int nod)
{
if(nod == parent[nod])
return nod;
return parent[nod] = findd(parent[nod]);
}
void unite(int u, int v)
{
u = findd(u); v = findd(v);
if(u == v)
return;
if (sz[u] < sz[v])
swap(u, v);
sz[u] += sz[v];
parent[v] = u;
}
signed main()
{
int m, i, tip, u, v;
cin >> n >> m;
init();
for(i = 1; i <= m; i ++)
{
cin >> tip >> u >> v;
if(tip == 1)
unite(u, v);
else
cout << (findd(u) == findd(v) ? "DA\n" : "NU\n");
}
return 0;
}