Hướng giải của Bạn và thù
Nộp mã nguồn lời giải chính thức trước khi giải bài tập đó có thể khiến bạn bị ban.
Tác giả:
```cpp
include <bits/stdc++.h>
using namespace std;
struct DSU {
vector
int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, q; cin >> n >> q; DSU dsu(n * 2); auto fr = & { return x; }; auto en = & { return x + n; }; while (q--) { int t, u, v; cin >> t >> u >> v; if (t == 1) { dsu.unite(fr(u), fr(v)); dsu.unite(en(u), en(v)); } else if (t == 2) { dsu.unite(fr(u), en(v)); dsu.unite(en(u), fr(v)); } else { if (dsu.find(fr(u)) == dsu.find(fr(v))) cout << 1 << '\n'; else if (dsu.find(fr(u)) == dsu.find(en(v))) cout << 2 << '\n'; else cout << 0 << '\n'; } } return 0; }
Nhận xét