Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
36106 chrisgr 【S】T3 C++ 通过 100 220 MS 15096 KB 1028 2025-02-07 15:57:17

Tests(20/20):


#include<bits/stdc++.h> using namespace std; const int N = 2e5 + 5, mod = 998244353; int n, a[N], b[N], deg[N], ans, inv; map<pair<int, int>, bool> mp; int p(int x, int y) { int ret = 1, xx = x; while(y) { if(y & 1) ret = 1ll * ret * xx % mod; xx = 1ll * xx * xx % mod; y >>= 1; } return ret; } int main() { scanf("%d", &n); for(int i = n - 1; i; --i) { scanf("%d%d", a + i, b + i); if(a[i] > b[i]) swap(a[i], b[i]); } for(int i = n - 1; i; --i) { int c, d; scanf("%d%d", &c, &d); if(c > d) swap(c, d); ++deg[c], ++deg[d]; mp[make_pair(c, d)] = 1; } inv = p(16, mod - 2); for(int i = n - 1; i; --i) { int now = n - 1 - deg[a[i]] - deg[b[i]]; if(mp.count(make_pair(a[i], b[i]))) ++now; ans += 1ll * now * inv % mod, ans %= mod; } ans += 1ll * 2 * (n - 1) * p(4, mod - 2) % mod; ans %= mod; printf("%d", ans); return 0; }


测评信息: