Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define in f
- #define out g
- ifstream f ("disjoint.in");
- ofstream g ("disjoint.out");
- int n;
- int m;
- int x;
- int y;
- int code;
- int father[100010];
- int uni (int x, int y) {
- if(father[y] == 0) {
- father[y] = x;
- } else {
- uni(x, father[y]);
- }
- }
- int query (int x, int y) {
- if((father[x] == 0)&&(father[y] == 0)) {
- if(x == y) {
- out << "DA" << endl;
- } else {
- out << "NU" << endl;
- }
- } else {
- if((father[x] == 0)&&(father[y] != 0)) {
- query(x, father[y]);
- } else {
- if((father[x] != 0)&&(father[y] == 0)) {
- query(father[x], y);
- } else {
- if((father[x] != 0)&&(father[y] != 0)) {
- query(father[x], father[y]);
- }
- }
- }
- }
- }
- int main() {
- in >> n;
- in >> m;
- for(int i = 1; i <= m; i++) {
- in >> code;
- in >> x;
- in >> y;
- if(code == 1) {
- uni(x, y);
- }
- if(code == 2) {
- query(x, y);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement