QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#694171 | #9530. A Game On Tree | szy10010 | WA | 2ms | 11852kb | C++23 | 2.1kb | 2024-10-31 17:24:59 | 2024-10-31 17:25:00 |
Judging History
answer
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <cmath>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
#define fi first
#define se second
#define u1 (u<<1)
#define u2 (u<<1|1)
#define pb emplace_back()
#define pp pop_back()
#define int long long
#define laile cout<<"laile"<<endl
#define lowbit(x) ((x)&(-x))
#define double long double
#define sf(x) scanf("%lld",&x)
#define sff(x,y) scanf("%lld %lld",&x,&y)
#define sd(x) scanf("%Lf",&x)
#define sdd(x,y) scanf("%Lf %Lf",&x,&y)
#define _for(i,n) for(int i=0;i<(n);++i)
#define _rep(i,a,b) for(int i=(a);i<=(b);++i)
#define _pre(i,a,b) for(int i=(a);i>=(b);--i)
#define all(x) (x).begin(), (x).end()
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
typedef unsigned long long ULL;
typedef pair<int,int>PII;
typedef pair<double,double>PDD;
const int N=1e6+10,INF=4e18,P=998244353;
int n,m;
int e[N],ne[N],h[N],idx;
int sz[N],sum[N];
int res;
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
void dfs(int u,int fa)
{
sz[u]=1;
sum[u]=0;
int s=0;
for(int i=h[u];~i;i=ne[i])
{
int j=e[i];
if(j==fa)continue;
dfs(j,u);
sz[u]+=sz[j];
// sum[u]+=sz[j]*sz[j]%P;
sum[u]+=sum[j]%P;
sum[u]%=P;
res+=2*(n-sz[j])*(n-sz[j])%P*(((sum[j]-sz[j]*sz[j]%P)%P+P)%P)%P;
res%=P;
res+=sz[j]*(n-sz[j])%P*sz[j]%P*(n-sz[j])%P;
res%=P;
s=(s+sum[j])%P;
}
sum[u]+=sz[u]*sz[u]%P;
sum[u]%=P;
for(int i=h[u];~i;i=ne[i])
{
int j=e[i];
if(j==fa)continue;
res+=(sum[j]*(((s-sum[j])%P+P)%P)%P)%P;
res%=P;
}
return;
}
int qmi(int a,int b)
{
int res=1;
while(b)
{
if(b&1)res=res*a%P;
a=a*a%P;
b>>=1;
}
return res;
}
void solve()
{
cin>>n;
memset(h,-1,(n+1)*8);
idx=res=0;
_rep(i,2,n)
{
int a,b;
cin>>a>>b;
add(a,b);
add(b,a);
}
dfs(1,0);
int Cn2=n*(n-1)/2;
Cn2%=P;
Cn2=Cn2*Cn2%P;
cout<<"res="<<res<<'\n';
cout<<res*qmi(Cn2,P-2)%P<<'\n';
return;
}
signed main()
{
IOS;
int T=1;
cin>>T;
while(T--)
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 2ms
memory: 11852kb
input:
2 3 1 2 2 3 5 1 2 1 5 3 2 4 2
output:
res=10 443664158 res=124 918384806
result:
wrong answer 1st lines differ - expected: '443664158', found: 'res=10'