Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
36128 | Mengmohan | 【S】T3 | C++ | 运行出错 | 85 | 1330 MS | 170380 KB | 1059 | 2025-02-07 16:50:58 |
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; const long long P=998244353; int n; long long ans,inv4,inv16; vector<int> ve[N]; map<int,bool> mp[N]; int qpow(int a,int b){ int ans=1; for(;b;b>>=1){ if(b&1) ans=1ll*ans*a%P; a=1ll*a*a%P; } return ans%P; } void dfs(int x,int fa){ for(int i=0;i<ve[x].size();i++){ int y=ve[x][i]; if(y==fa) continue; ans=(ans+1ll*(n-mp[x].size()-mp[y].size()-(!(mp[x].count(y)||mp[y].count(x))))*inv16%P)%P; dfs(y,x); } } int main(){ scanf("%d",&n); for(int i=1;i<n;i++){ int u,v; scanf("%d%d",&u,&v); ve[u].push_back(v); ve[v].push_back(u); } for(int i=1;i<n;i++){ int u,v; scanf("%d%d",&u,&v); mp[u][v]=1; mp[v][u]=1; } inv4=qpow(4,P-2); inv16=inv4*inv4%P; ans=(ans+1ll*n*(n-1)%P*inv4%P)%P; ans=((ans-1ll*(n-2)*(n-1)%P*inv4%P)%P+P)%P; dfs(1,0); printf("%lld",ans%P); return 0; }