結果
| 問題 | No.3390 Public or Private |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-28 22:46:28 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,791 bytes |
| コンパイル時間 | 4,227 ms |
| コンパイル使用メモリ | 297,288 KB |
| 実行使用メモリ | 7,852 KB |
| 最終ジャッジ日時 | 2025-11-28 22:47:07 |
| 合計ジャッジ時間 | 8,733 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 RE * 1 |
| other | AC * 5 RE * 22 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/fenwicktree.hpp>
#include <atcoder/segtree.hpp>
#include <atcoder/modint.hpp>
#include <atcoder/dsu.hpp>
#include <atcoder/lazysegtree.hpp>
using namespace atcoder;
using namespace std;
using ll = long long;
using ull = unsigned long long;
template <class T>
using max_heap = priority_queue<T>;
template <class T>
using min_heap = priority_queue<T, vector<T>, greater<>>;
ll ll_min = numeric_limits<ll>::min();
ll ll_max = numeric_limits<ll>::max();
ll ALPHABET_N = 26;
// using mint = modint998244353;
// using mint = modint1000000007;
#define rep(i, n) for (ll i = (ll)0; i < (ll)n; i++)
#define rep_(i, k, n) for (ll i = (ll)k; i < (ll)n; i++)
#define all(a) a.begin(), a.end()
using i128 = __int128_t;
int main()
{
ll n, m;
cin >> n >> m;
vector<ll> U(n), V(n);
rep(i, m)
{
cin >> U[i] >> V[i];
U[i]--;
V[i]--;
}
ll q;
cin >> q;
vector<ll> Q(q), A(q), B(q);
set<ll> bst;
rep(i, q)
{
cin >> Q[i] >> A[i] >> B[i];
A[i]--;
B[i]--;
if (Q[i] == 2)
bst.insert(A[i]);
}
set<pair<ll, ll>> follow_st;
rep(i, m)
{
ll u = U[i], v = V[i];
if (bst.count(V[i]))
{
follow_st.insert({U[i], V[i]});
}
}
map<ll, bool> open;
ll ans_ = n - follow_st.size();
rep(i, q)
{
ll q = Q[i];
ll a = A[i];
ll b = B[i];
if (q == 1)
{
if (bst.count(b))
{
if (follow_st.count({a, b}))
{
follow_st.erase({a, b});
}
else
{
follow_st.insert({a, b});
}
}
}
else
{
if (!open.count(a) || open[a])
{
open[a] = false;
}
else
{
open[a] = true;
}
}
ll ans = n - 1;
for (auto b : bst)
{
if (b == a)
continue;
if (open.count(b) && !open[b] && !follow_st.count({a, b}))
{
ans--;
}
}
cout << ans << endl;
}
return 0;
}