提交时间:2025-02-07 21:24:42
运行 ID: 36172
#include<bits/stdc++.h> using namespace std; const int p=998244353; int n,dt[114514*2],du[114514*2],vv,vs,ss; vector<int>t[114514*2],u[114514*2]; set<int>e; int power(int x,int y) { int res=1; for(int i=1;i<=y;i++) { res=res*x%p; } return res; } void dfs(int x,int fa) { for(int i=0;i<t[x].size();i++) { if(t[x][i]!=fa) { int y=fa; if(x!=y) { if(e.find(x*200010+y)!=e.end()) { ss+=(n-1-du[x]-du[y])%p*(power(2,n-4))%p; } else { ss+=(n-1-du[x]-du[y]+1)%p*(power(2,n-4))%p; } } dfs(t[x][i],x); } } return; } int main() { cin>>n; for(int i=1;i<=n-1;i++) { int x,y; cin>>x>>y; t[x].push_back(y); t[y].push_back(x); dt[x]++; dt[y]++; } for(int i=1;i<=n-1;i++) { int x,y; cin>>x>>y; u[x].push_back(y); u[y].push_back(x); du[x]++; du[y]++; e.insert(x*200010+y); e.insert(y*200010+x); } vv=n%p*(n-1)%p*power(2,n-2)%p; vs=(n-1)%p*(n-2)%p*power(2,n-3)%p; dfs(1,0); cout<<(vv-vs-vs+ss)%p/power(2,n)%p; return 0; }