QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#710429 | #9530. A Game On Tree | lvliang | WA | 1ms | 5928kb | C++14 | 1.7kb | 2024-11-04 19:47:58 | 2024-11-04 19:47:59 |
Judging History
answer
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
const int mod = 998244353;
typedef long long LL;
int n;
int h[N], e[N << 1], ne[N << 1], idx;
LL si[N], sum[N];
LL ans;
void add(int a, int b) {
e[++idx] = b, ne[idx] = h[a], h[a] = idx;
}
LL dfs(int u, int father) {
si[u] = 1;
sum[u] = 0;
LL pre_sum = 0;
LL tmppre_sum = 0;
for (int i = h[u]; i; i = ne[i]) {
int j = e[i];
if (j == father) continue;
LL x = dfs(j, u);
tmppre_sum = (tmppre_sum + pre_sum * sum[j]) % mod;
pre_sum += sum[j];
LL tmp1 = x * x % mod;
LL tmp2 = (n - x) * (n - x) % mod;
ans = (ans + tmp1 * tmp2 % mod) % mod;
ans = (ans + tmp2 * (sum[j] - tmp1) % mod * 2) % mod;
si[u] += x;
sum[u] += x * x;
}
ans = (ans + tmppre_sum * 2) % mod;
sum[u] = (sum[u] + si[u] * si[u]) % mod;
return si[u];
}
LL quick_pow(LL base, LL power, LL mod) {
LL ans = 1;
while (power) {
if (power & 1) ans = base * ans % mod;
base = base * base % mod;
power >>= 1;
}
return ans;
}
void solve() {
ans = 0, idx = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum[i] = si[i] = h[i] = 0;
}
for (int i = 1; i < n; i++) {
int u, v;
scanf("%d%d", &u, &v);
add(u, v), add(v, u);
}
dfs(1, -1);
LL y = (LL)n * (n - 1) / 2;
LL x = quick_pow(y * y % mod, mod - 2 , mod);
x = (x + mod) % mod;
printf("%lld\n", ans * x % mod);
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5928kb
input:
2 3 1 2 2 3 5 1 2 1 5 3 2 4 2
output:
443664158 918384806
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 5920kb
input:
1000 7 3 6 4 3 5 3 2 6 1 4 7 1 12 5 7 10 7 2 10 11 2 1 7 8 1 4 2 9 11 6 9 12 11 3 5 6 2 5 1 2 4 5 6 4 3 6 5 2 5 1 5 4 5 3 2 8 1 8 2 8 4 2 6 1 5 6 7 6 3 8 8 3 8 7 3 4 8 6 4 2 7 5 2 1 4 4 3 1 4 3 2 1 6 5 1 6 1 2 5 3 5 4 2 12 8 11 5 11 12 8 3 12 6 12 2 3 4 6 10 11 1 5 9 5 7 5 9 6 1 7 6 4 7 8 7 5 4 9 6 ...
output:
934863761 939119690 381551177 259543533 495302366 760142705 776412276 292818345 628600613 203346074 791817282 243399088 247498602 616913179 298240908 198662952 507601297 584006902 38943856 154050056 359102138 109501295 816465290 98592036 758665710 166649059 961765302 589524409 310564911 431340154 81...
result:
wrong answer 1st lines differ - expected: '948445317', found: '934863761'