QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#811791 | #8809. Telephone Plans | ucup-team004 | 0 | 0ms | 3752kb | C++23 | 3.9kb | 2024-12-13 01:21:12 | 2024-12-13 01:21:16 |
Judging History
answer
#include <bits/stdc++.h>
using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;
using u128 = unsigned __int128;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int E;
std::cin >> E;
int N, Q;
std::cin >> N >> Q;
std::vector<int> siz(2 * N, 1), bel(N);
std::iota(bel.begin(), bel.end(), 0);
int curbel = N;
std::vector<std::set<int>> adj(N);
auto link = [&](int x, int y) {
if (siz[bel[y]] > siz[bel[x]]) {
std::swap(x, y);
}
siz[bel[x]] += siz[bel[y]];
auto dfs = [&](auto &&self, int a, int p) -> void {
bel[a] = bel[x];
for (auto b : adj[a]) {
if (b == p) {
continue;
}
self(self, b, a);
}
};
dfs(dfs, y, -1);
adj[x].insert(y);
adj[y].insert(x);
};
auto cut = [&](int x, int y) -> void {
adj[x].erase(y);
adj[y].erase(x);
std::vector<std::pair<int, std::set<int>::iterator>> sx, sy;
sx.emplace_back(x, adj[x].begin());
sy.emplace_back(y, adj[y].begin());
std::vector<int> vx {x}, vy {y};
while (!sx.empty() && !sy.empty()) {
{
auto &[a, it] = sx.back();
if (it == adj[a].end()) {
sx.pop_back();
} else {
int b = *(it++);
if (sx.size() == 1 || b != sx[sx.size() - 2].first) {
sx.emplace_back(b, adj[b].begin());
vx.push_back(x);
}
}
}
{
auto &[a, it] = sy.back();
if (it == adj[a].end()) {
sy.pop_back();
} else {
int b = *(it++);
if (sy.size() == 1 || b != sy[sy.size() - 2].first) {
sy.emplace_back(b, adj[b].begin());
vy.push_back(y);
}
}
}
}
if (sx.empty()) {
siz[bel[y]] -= vx.size();
for (auto i : vx) {
bel[i] = curbel;
}
siz[curbel++] = vx.size();
} else {
siz[bel[x]] -= vy.size();
for (auto i : vy) {
bel[i] = curbel;
}
siz[curbel++] = vy.size();
}
};
i64 cur = 0;
i64 lst = 0;
std::vector<i64> pre(Q + 1);
std::vector<i64> val(Q + 1);
for (int i = 1; i <= Q; i++) {
int o;
std::cin >> o;
if (o == 1) {
i64 x, y;
std::cin >> x >> y;
if (E) {
x ^= lst;
y ^= lst;
}
x--;
y--;
cur += 1LL * siz[bel[x]] * siz[bel[y]];
link(x, y);
val[i] = cur;
pre[i] = pre[i - 1] + val[i] - std::min(val[i - 1], val[i]);
} else if (o == 2) {
i64 x, y;
std::cin >> x >> y;
if (E) {
x ^= lst;
y ^= lst;
}
x--;
y--;
cut(x, y);
cur -= 1LL * siz[bel[x]] * siz[bel[y]];
val[i] = cur;
pre[i] = pre[i - 1] + val[i] - std::min(val[i - 1], val[i]);
} else {
i64 t;
std::cin >> t;
if (E) {
t ^= lst;
}
val[i] = cur;
pre[i] = pre[i - 1] + val[i] - std::min(val[i - 1], val[i]);
lst = pre[i] - pre[i - t] + val[i - t];
std::cout << lst << "\n";
}
}
return 0;
}
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 3
Accepted
time: 0ms
memory: 3556kb
input:
0 1 147 3 0 3 0 3 1 3 1 3 0 3 5 3 5 3 1 3 1 3 4 3 8 3 2 3 10 3 13 3 10 3 8 3 8 3 0 3 16 3 3 3 1 3 20 3 2 3 10 3 16 3 13 3 17 3 12 3 22 3 7 3 8 3 2 3 12 3 32 3 12 3 31 3 2 3 0 3 21 3 24 3 28 3 32 3 9 3 18 3 26 3 11 3 45 3 35 3 14 3 34 3 49 3 31 3 43 3 11 3 21 3 50 3 4 3 11 3 31 3 51 3 28 3 26 3 18 3 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 147 lines
Test #2:
score: 3
Accepted
time: 0ms
memory: 3748kb
input:
0 2 10 1 1 2 3 1 3 1 3 2 3 3 3 3 3 3 2 1 2 3 2 3 3
output:
1 1 1 1 1 1 1 1
result:
ok 8 lines
Test #3:
score: 3
Accepted
time: 0ms
memory: 3500kb
input:
0 30 150 1 14 10 3 1 1 14 6 1 3 6 3 4 3 4 1 2 3 3 0 3 5 1 2 9 1 11 9 3 8 1 19 11 3 6 1 8 19 3 14 3 10 1 27 8 3 15 1 27 28 1 28 20 3 0 3 3 1 20 7 1 7 23 3 13 3 5 1 24 23 3 0 3 28 1 24 13 3 5 3 32 3 1 3 13 1 30 13 3 25 1 30 16 1 15 16 3 22 1 29 15 3 13 1 29 25 1 25 1 1 1 18 3 17 3 8 3 10 1 26 18 3 46 ...
output:
1 6 6 10 10 21 28 36 36 45 66 66 91 91 105 105 120 120 120 120 136 171 190 253 253 253 276 276 300 300 300 325 351 351 351 351 406 406 435 435 435 435 435 406 435 435 435 300 435 435 406 435 435 136 435 190 435 435 435 136 406 105 120 136 120 435 435 253 435 66 435 435 435 91 435 435 28 435 55 55 43...
result:
ok 92 lines
Test #4:
score: 3
Accepted
time: 0ms
memory: 3616kb
input:
0 30 150 1 18 9 1 18 28 3 0 3 2 1 28 6 3 4 3 3 3 3 1 26 6 1 5 26 1 5 24 1 17 24 3 9 1 17 3 3 12 3 8 3 10 3 7 1 3 13 3 18 1 13 29 3 8 1 29 14 3 11 3 19 1 7 14 3 17 3 27 1 7 23 3 23 3 15 1 8 23 3 17 3 24 1 8 21 3 7 1 30 21 3 4 3 0 3 32 1 15 30 3 5 3 37 1 15 22 1 11 22 3 3 3 36 1 27 11 3 29 3 11 1 27 1...
output:
3 3 6 6 6 28 36 36 36 36 45 55 66 66 78 78 91 91 105 105 120 136 136 136 153 153 190 190 210 210 253 253 276 276 300 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 378 435 435 435 435 435 435 435 435 435 378 435 435 435 435 435 435 190 435 435 435 66 190 55 435 325 190 91 66...
result:
ok 92 lines
Test #5:
score: 0
Wrong Answer
time: 0ms
memory: 3752kb
input:
0 30 150 1 1 16 3 1 3 0 3 2 3 1 1 26 1 3 4 1 10 21 1 29 8 1 11 17 3 8 3 8 3 3 3 3 3 6 1 2 9 2 29 8 3 11 3 4 3 16 3 8 1 28 4 3 11 3 18 3 11 3 21 1 20 9 1 6 15 1 4 3 3 5 1 12 5 1 22 25 3 20 3 26 1 7 13 1 16 6 3 34 3 21 3 27 2 1 16 3 34 3 39 3 38 3 3 1 24 5 2 16 6 3 36 3 23 1 27 8 3 15 1 10 17 3 29 3 4...
output:
1 1 1 1 3 6 6 6 6 6 7 7 7 7 8 8 8 8 12 15 15 22 21 22 22 22 22 15 24 23 24 28 29 28 32 32 31 23 31 38 47 48 40 50 60 62 65 56 64 64 39 70 70 70 70 62 71 57 71 71 71 62 79 80 72 86 50 85 72 75 47 36 86 79 72 54 36 50 32 68 72 11 86 72 86 32 79 34 79 86 78 20
result:
wrong answer 65th lines differ - expected: '68', found: '72'
Subtask #2:
score: 0
Runtime Error
Test #29:
score: 2
Accepted
time: 0ms
memory: 3588kb
input:
1 1 147 3 0 3 0 3 1 3 1 3 3 3 0 3 6 3 6 3 0 3 2 3 0 3 5 3 12 3 1 3 2 3 10 3 13 3 15 3 3 3 12 3 20 3 18 3 10 3 12 3 2 3 12 3 14 3 26 3 12 3 24 3 7 3 7 3 6 3 29 3 32 3 16 3 23 3 14 3 25 3 13 3 13 3 31 3 20 3 26 3 0 3 40 3 23 3 28 3 35 3 1 3 31 3 2 3 34 3 37 3 3 3 39 3 17 3 4 3 41 3 11 3 16 3 48 3 10 3...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 147 lines
Test #30:
score: 2
Accepted
time: 0ms
memory: 3616kb
input:
1 2 10 1 1 2 3 1 3 1 3 1 3 1 3 1 3 2 3 6 2 0 3 3 2
output:
1 1 1 1 1 1 1 1
result:
ok 8 lines
Test #31:
score: 2
Accepted
time: 0ms
memory: 3748kb
input:
1 30 150 1 21 13 3 1 1 9 20 3 2 3 2 1 18 11 1 18 0 3 6 3 9 3 8 1 12 9 3 8 3 7 1 10 9 3 5 3 24 3 26 3 28 1 6 16 3 6 3 14 1 15 23 3 21 3 48 1 60 47 3 53 3 37 1 35 53 3 56 1 57 59 1 59 37 3 63 3 95 3 94 1 92 79 3 65 1 90 81 1 95 81 3 75 3 111 3 118 3 100 1 124 98 1 101 98 3 121 3 132 3 137 3 153 1 141 ...
output:
1 3 3 10 10 10 15 15 21 21 21 21 28 28 36 36 45 45 55 78 78 78 91 120 120 120 120 153 153 153 153 171 171 190 190 210 231 231 253 253 253 276 300 300 325 325 351 351 406 406 406 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 435 276 435 435 435 435 435 136 435 435 10...
result:
ok 92 lines
Test #32:
score: 2
Accepted
time: 0ms
memory: 3616kb
input:
1 30 150 1 4 26 3 0 1 26 5 3 1 1 24 19 1 19 15 3 1 3 14 1 6 28 1 28 4 3 3 3 28 3 28 1 24 27 3 25 3 27 1 4 17 1 11 4 3 22 1 47 58 3 43 1 60 53 3 57 1 73 83 3 70 1 95 82 3 91 3 92 3 73 3 88 1 71 92 3 78 1 110 102 1 102 106 1 106 111 3 123 3 144 3 136 1 159 147 1 145 147 3 191 1 182 172 3 178 3 205 3 2...
output:
1 3 10 10 21 21 21 28 28 45 55 66 78 91 91 91 91 105 153 153 153 190 210 210 210 210 253 253 253 276 325 325 378 378 378 378 435 435 435 435 435 435 435 378 435 435 378 435 435 435 435 435 435 435 435 253 435 435 276 435 435 231 435 435 435 435 435 435 136 300 276 435 435 300 435 190 435 435 36 435 ...
result:
ok 92 lines
Test #33:
score: 0
Runtime Error
input:
1 30 150 1 19 12 3 1 1 22 9 3 0 3 6 1 1 20 3 6 3 5 3 1 3 1 3 5 3 10 3 5 3 4 3 2 1 10 8 3 12 3 20 1 11 17 3 14 3 12 1 31 18 3 12 3 9 3 1 3 17 1 19 10 3 11 3 9 1 10 16 3 13 3 5 3 31 1 7 15 3 13 3 26 1 22 27 3 19 1 15 14 3 17 1 21 23 1 26 28 1 3 24 1 0 11 3 0 3 63 1 19 11 3 29 3 63 1 28 25 3 58 3 63 3 ...
output:
result:
Subtask #3:
score: 0
Skipped
Dependency #1:
0%
Subtask #4:
score: 0
Skipped
Dependency #2:
0%
Subtask #5:
score: 0
Skipped
Dependency #3:
0%
Subtask #6:
score: 0
Skipped
Dependency #4:
0%
Subtask #7:
score: 0
Skipped
Dependency #6:
0%