QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#886788 | #8809. Telephone Plans | hhoppitree | 0 | 3ms | 32776kb | C++20 | 2.0kb | 2025-02-07 11:32:55 | 2025-02-07 11:32:55 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5, Q = 1.5e6 + 5;
int cnt, wh[Q], siz[Q];
long long add[Q], del[Q];
set<int> G[N];
void color(int x, int y) {
wh[x] = y;
for (auto z : G[x]) {
if (wh[z] != y) color(z, y);
}
}
long long link(int x, int y) {
if (siz[wh[x]] > siz[wh[y]]) swap(x, y);
long long res = 1ll * siz[wh[x]] * siz[wh[y]];
G[x].insert(y), G[y].insert(x);
siz[wh[y]] += siz[wh[x]];
color(x, wh[y]);
return res;
}
long long cut(int x, int y) {
G[x].erase(y), G[y].erase(x);
queue< tuple<int, int, set<int>::iterator> > Q[2];
vector<int> p[2];
Q[0].push({x, 0, G[x].begin()}), Q[1].push({y, 0, G[y].begin()});
for (int i = 0; !Q[i].empty(); i ^= 1) {
auto [a, b, c] = Q[i].front(); Q[i].pop();
if (c == G[a].begin()) p[i].push_back(a);
while (c != G[a].end() && *c == b) ++c;
if (c != G[a].end()) {
Q[i].push({*c, a, G[*c].begin()});
Q[i].push({a, b, next(c)});
}
}
if (!Q[0].empty()) swap(Q[0], Q[1]), swap(p[0], p[1]);
++cnt;
for (auto v : p[0]) {
wh[v] = cnt;
}
siz[cnt] = p[0].size(), siz[wh[p[1][0]]] -= p[0].size();
return 1ll * siz[x] * siz[y];
}
signed main() {
int E, n, q; scanf("%d%d%d", &E, &n, &q);
cnt = n;
for (int i = 1; i <= n; ++i) wh[i] = i, siz[i] = 1;
long long ans = 0;
for (int i = 1; i <= q; ++i) {
add[i] = add[i - 1], del[i] = del[i - 1];
int opt; scanf("%d", &opt);
if (opt == 1) {
long long x, y; scanf("%lld%lld", &x, &y);
if (E) x ^= ans, y ^= ans;
add[i] += link(x, y);
} else if (opt == 2) {
long long x, y; scanf("%lld%lld", &x, &y);
if (E) x ^= ans, y ^= ans;
del[i] += cut(x, y);
} else {
long long x; scanf("%lld", &x);
if (E) x ^= ans;
printf("%lld\n", ans = add[i] - del[i - x]);
}
}
return 0;
}
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 3
Accepted
time: 2ms
memory: 31528kb
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: 1ms
memory: 32776kb
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: 0
Wrong Answer
time: 1ms
memory: 31480kb
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 434 435 435 435 430 435 435 434 435 435 422 435 425 435 435 435 422 434 420 421 422 421 435 435 428 435 417 435 435 435 419 435 435 413 435 416 4...
result:
wrong answer 44th lines differ - expected: '406', found: '434'
Subtask #2:
score: 0
Runtime Error
Test #29:
score: 2
Accepted
time: 1ms
memory: 32384kb
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: 3ms
memory: 32764kb
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: 0
Runtime Error
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:
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%