Pagini recente » Cod sursa (job #713164) | Cod sursa (job #1258510) | Cod sursa (job #2854552) | Istoria paginii runda/as5/clasament | Cod sursa (job #2500966)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int n, m, p[100001];
int parent(int a) {
int ans = a;
while(ans != p[ans])
ans = p[ans];
while(a != p[a]) {
int temp = p[a];
p[a] = ans;
a = temp;
}
return ans;
}
void unite(int a, int b) {
p[parent(a)] = p[parent(b)];
}
bool same(int a, int b) {
return parent(a) == parent(b);
}
int main() {
cin >> n >> m;
for(int i = 1; i <= n; i++)
p[i] = i;
while(m--) {
int cer, a, b;
cin >> cer >> a >> b;
if(cer == 1)
unite(a, b);
else
cout << (same(a, b) ? "DA\n" : "NU\n");
}
return 0;
}