提交时间:2025-02-07 15:47:00
运行 ID: 36100
#include<bits/stdc++.h> #define int long long #define PII pair<int,int> using namespace std; const int mod=998244353; const int Inv2=(mod+1)>>1; const int maxn=1e5+7; int n; int EU[maxn],EV[maxn]; int GU[maxn],GV[maxn]; int DE[maxn],DG[maxn]; map<PII,bool> E; signed main(){ // freopen("tree.in","r",stdin); // freopen("tree.out","w",stdout); cin>>n; for(int i=1;i<n;i++)cin>>EU[i]>>EV[i],DE[EU[i]]++,DE[EV[i]]++; for(int i=1;i<n;i++)cin>>GU[i]>>GV[i],DG[GU[i]]++,DG[GV[i]]++; for(int i=1;i<n;i++){ E[PII(EU[i],EV[i])]=E[PII(EV[i],EU[i])]=1; } int Ans=(n-1)*Inv2%mod; const int Inv16=Inv2*Inv2%mod*Inv2%mod*Inv2%mod; int ED2=0; for(int i=1;i<n;i++){ ED2+=n-1-DG[EU[i]]-DG[EV[i]]; } for(int i=1;i<n;i++)ED2+=E[PII(GU[i],GV[i])]; (Ans+=ED2*Inv16%mod)%=mod; cout<<Ans<<endl; return 0; }