結果
| 問題 | No.3390 Public or Private |
| コンテスト | |
| ユーザー |
forest3
|
| 提出日時 | 2025-12-23 16:07:27 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,291 bytes |
| 記録 | |
| コンパイル時間 | 1,663 ms |
| コンパイル使用メモリ | 181,372 KB |
| 実行使用メモリ | 60,404 KB |
| 最終ジャッジ日時 | 2025-12-23 16:07:34 |
| 合計ジャッジ時間 | 6,175 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | TLE * 1 -- * 26 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i = a; i < b; i++)
using ll = long long;
int main(){
cin.tie(nullptr);
ios::sync_with_stdio(false);
int n, m, q;
cin >> n >> m;
vector<int> a(m), b(m);
map<int, int> mp;
rep(i, 0, m) {
cin >> a[i] >> b[i];
a[i]--, b[i]--;
mp[a[i]]++;
mp[b[i]]++;
}
cin >> q;
vector<int> t(q), qa(q), qb(q);
set<int> stq;
rep(i, 0, q) {
cin >> t[i] >> qa[i] >> qb[i];
qa[i]--, qb[i]--;
if(t[i] == 1) {
mp[qa[i]]++;
mp[qb[i]]++;
stq.insert(qb[i]);
}
else {
mp[qa[i]]++;
stq.insert(qa[i]);
}
}
int sz = 0, szq = stq.size();
for(auto it = mp.begin(); it != mp.end(); it++) {
it->second = sz;
sz++;
}
vector<set<int>> st(sz);
set<int> cl;
rep(i, 0, m) {
st[mp[a[i]]].insert(mp[b[i]]);
}
rep(i, 0, q) {
if(t[i] == 1) {
int aa = mp[qa[i]], bb = mp[qb[i]];
if(st[aa].count(bb)) st[aa].erase(bb);
else st[aa].insert(bb);
}
else {
int aa = mp[qa[i]];
if(cl.count(aa)) cl.erase(aa);
else cl.insert(aa);
}
int c = n - szq;
if(stq.count(qa[i]) == 0) c--;
int a = mp[qa[i]];
for(auto it = stq.begin(); it != stq.end(); it++) {
int b = mp[*it];
if(b == a) continue;
if(cl.count(b) == 0 || st[a].count(b)) c++;
}
cout << c << endl;
}
}
forest3