algo — C++23 日本語リファレンス GitHub

test/aoj/challenge/2235.test.cpp

AC · 最終更新 2026-08-01 · GitHub

問題: https://onlinejudge.u-aizu.ac.jp/problems/2235

依存するヘッダ(2)
実装
// competitive-verifier: PROBLEM https://onlinejudge.u-aizu.ac.jp/problems/2235
#include <iostream>
#include <utility>
#include <vector>
#include "data_structure/offline_dynamic_connectivity.hpp"

int main(void) {
    int n, q;
    std::cin >> n >> q;
    offline_dynamic_connectivity dc(n, q);
    std::vector<std::tuple<int, int, int>> v(q);
    for (int i = 0; i < q; ++i) {
        auto &[a, b, c] = v[i];
        std::cin >> a >> b >> c;
        if (a == 1) dc.add(i, b, c);
        else if (a == 2) dc.erase(i, b, c);
    }
    dc.build();
    std::vector<int> ans(q);
    auto f = [&](int x) {
        auto [a, b, c] = v[x];
        if (a == 3) ans[x] = dc.same(b, c);
    };
    dc.solve(f);
    for (int i = 0; i < q; ++i) {
        auto [a, b, c] = v[i];
        if (a == 3) std::cout << (ans[i] ? "YES\n" : "NO\n");
    }

    return 0;
}