QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#707194 | #9530. A Game On Tree | sea_bird | WA | 138ms | 10300kb | C++14 | 2.3kb | 2024-11-03 15:04:27 | 2024-11-03 15:04:29 |
Judging History
answer
#include<bits/stdc++.h>
typedef long long ll;
const ll mod = 998244353;
const int maxn = 1e5 + 100;
std::vector<int>g[maxn];
ll siz[maxn],sum[maxn];
// x^2 =
ll n;
ll ans = 0LL;
ll qpow(ll a,ll b){
ll ans = 1LL;
while(b){
if(b & 1LL)ans = ans * a % mod;
b >>= 1LL;
a = a * a % mod;
}
return ans;
}
ll inv(ll a){
return qpow(a,mod-2LL);
}
void dfs(int u,int fa){
siz[u] = 1;
sum[u] = 0LL;
for(int i = 0;i < (int)g[u].size();i++){
int v = g[u][i];
if(v==fa)continue;
dfs(v,u);
siz[u] = (siz[u] + siz[v]) % mod;
sum[u] = (sum[u] + sum[v]) % mod;
ll tmp = (n - siz[v]) * siz[v] % mod;
tmp = tmp * tmp % mod;
ans = (ans + tmp % mod) % mod;
}
sum[u] = (sum[u] + siz[u] * siz[u] % mod) % mod;
ll res = 0LL;
for(int i = 0;i < (int)g[u].size();i++){
int v = g[u][i];
if(v == fa)continue;
ll tmp = (sum[u] - siz[u] * siz[u] % mod) % mod;
res = (res + sum[v]) % mod;
// ans = (tmp % mod + ans) % mod;
tmp = (n - siz[v]) * (n - siz[v]) % mod;
ll oth = (sum[v] - siz[v] * siz[v] % mod) % mod;
oth = (oth % mod + mod) % mod;
ans = (ans + tmp * oth % mod * 2LL % mod) % mod;
}
for(int i = 0;i < (int)g[u].size();i++){
int v = g[u][i];
if(v == fa)continue;
ll tmp = (res - sum[v] % mod) % mod;
tmp = (tmp % mod + mod) % mod;
ans = (ans + tmp * sum[v] % mod) % mod;
}
//ans = (ans + res * inv(2LL) % mod) % mod;
}
int cnt = 0;
//9992
int ttt = 0;
void solve(){
std::cin >> n;
for(int i = 1;i<=n;i++)g[i].clear();
for(int i = 1;i < n;i++){
int u,v;
std::cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
if(ttt == 10000){
cnt++;
if(cnt == 9992){
std::cout << n << "\n";
for(int i = 1;i<=n;i++){
for(auto x : g[i]){
std::cout << x << " ";
}
std::cout << " || " << i << "\n";
}
return;
}
return;
}
ans = 0LL;
dfs(1,0);
ll oth = n * (n - 1LL) / 2LL;
oth = inv(oth * oth % mod) % mod;
std::cout << (ans * oth % mod + mod) % mod << "\n";
}
int main(){
std::ios::sync_with_stdio(0);
std::cin.tie(0),std::cout.tie(0);
int t;
std::cin >> t;
ttt = t;
while(t--){
solve();
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5932kb
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: 0
Accepted
time: 0ms
memory: 7324kb
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:
948445317 468414020 550143557 918384806 711758412 487662742 776412276 869581749 240852807 765628773 211048577 887328316 890334966 940494682 760637552 908032643 592850815 584006902 908525604 221832080 433351719 56023919 867301808 183319566 698771049 366957926 449579681 599710576 310564911 286902823 3...
result:
ok 1000 lines
Test #3:
score: 0
Accepted
time: 11ms
memory: 7032kb
input:
1000 94 59 1 33 59 73 1 6 33 83 59 4 59 20 59 61 6 39 1 76 73 71 6 44 39 9 71 24 4 87 9 57 83 2 9 81 71 82 20 90 2 85 39 12 9 30 83 66 30 53 9 47 9 36 44 43 53 29 12 31 53 64 81 38 31 84 82 77 38 23 71 93 84 78 83 58 31 68 90 42 1 55 64 13 78 70 78 62 24 19 55 92 87 14 57 10 84 65 81 63 6 75 36 91 1...
output:
508107725 996793960 201633249 335988372 842755864 460619380 342223697 207523414 429241811 391691799 542977964 786416604 454278948 685531402 25914978 440729774 228518323 679471537 82764520 554190841 432505337 143444089 189106586 337234245 61954935 905141094 532919674 703954588 185671863 942858630 692...
result:
ok 1000 lines
Test #4:
score: -100
Wrong Answer
time: 138ms
memory: 10300kb
input:
10000 8 1 4 3 1 5 1 7 3 8 4 6 8 2 7 8 2 6 4 6 5 6 8 5 7 6 3 5 1 7 8 8 5 6 5 2 5 7 2 1 6 3 1 4 8 9 8 6 9 8 3 6 1 8 5 9 2 8 4 3 7 9 8 8 6 3 6 5 8 1 6 4 3 7 6 2 6 9 9 5 7 5 2 7 8 7 4 9 3 7 6 3 1 4 8 1 4 5 1 6 5 3 4 8 4 7 8 2 5 9 1 8 6 1 2 1 3 8 5 3 9 8 7 8 4 8 9 4 9 2 9 1 2 3 4 5 2 6 9 8 3 7 2 8 1 2 8 ...
output:
100000 94998 3812 3694 95680 || 1 18943 69948 66342 94824 || 2 64193 || 3 31123 || 4 51249 57482 || 5 91676 59546 || 6 84518 19295 || 7 57943 43207 3819 || 8 82772 || 9 61516 || 10 8448 || 11 29863 62540 || 12 9347 || 13 1389 || 14 93877 56436 || 15 43515 || 16 28017 ...
result:
wrong answer 1st lines differ - expected: '49657566', found: '100000'