QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#693379 | #9530. A Game On Tree | wangshengzhe | WA | 0ms | 5684kb | C++20 | 1.7kb | 2024-10-31 16:03:16 | 2024-10-31 16:03:16 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using LL = long long;
const int N = 2e5 + 5;
const int mod = 998244353;
#define sc(x) scanf("%d",&x)
#define sl(x) scanf("%lld",&x)
#define rep(i,a, b) for(int i = a;i<=b;i++)
#define rep2(i,a, b) for(int i = a;i>=b;i--)
#define pb push_back
#define ll long long
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
vector<int>E[N];
int siz[N];
ll res = 0;
ll sum[N];
void dfs0(int u, int fa) {
siz[u] = 1;
rep(i, 0, E[u].size() - 1) {
int v = E[u][i];
if (v == fa)continue;
dfs0(v, u);
siz[u] += siz[v];
}
return;
}
ll nal; int n;
void dfs(int u, int fa) {
rep(i, 0, E[u].size() - 1) {
int v = E[u][i];
if (v == fa)continue;
dfs(v, u);
res += 1ll * (n - siz[v]) * (n - siz[v]) % mod * siz[v] % mod * siz[v] % mod;
res += 2ll * sum[u] * sum[v] % mod;
sum[u] += sum[v];res%=mod;
}
res += 2 * (n - siz[u]) * (n - siz[u]) % mod * sum[u] % mod;
res%=mod;
sum[u] += 1ll*siz[u] * siz[u];
return;
}
ll ksm(ll a, ll b) {
ll res = 1;
while (b) {
if (b % 2 == 1)res = res * a % mod;
a = a * a % mod;
b /= 2;
}
return res;
}
int main()
{
int T;
cin >> T;
while (T--) {
sc(n);
res=0;
nal = ksm(1ll * n * (n - 1) / 2 % mod, mod - 2);
nal = nal * nal % mod;
rep(i, 1, n)sum[i] = siz[i] = 0;
rep(i, 1, n - 1) {
int u, v;
sc(u); sc(v);
E[u].pb(v); E[v].pb(u);
}
dfs0(1, -1);
dfs(1, -1);
cout << res * nal % mod << endl;
}
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 5684kb
input:
2 3 1 2 2 3 5 1 2 1 5 3 2 4 2
output:
443664158 379332915
result:
wrong answer 2nd lines differ - expected: '918384806', found: '379332915'