Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
35980 a+qazolite 【S】T3 C++ 通过 100 449 MS 26040 KB 1321 2025-02-07 13:21:59

Tests(20/20):


#include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; const int N = 2e5 + 5, MOD = 998244353; int n, d[N], g[2][25][25]; bool vis[N]; map<pii, bool> b; inline int A(int x, int y) { return (x + y) % MOD; } inline int S(int x, int y) { return A(x, MOD - y); } inline int W(int x, int y) { return 1ll * x * y % MOD; } inline int P(int x, int y) { int t = x % MOD, res = 1; while (y) { if (y & 1) res = W(res, t); t = W(t, t); y >>= 1; } return res; } inline int D(int x, int y) { return W(x, P(y, MOD - 2)); } inline int SUM(int x) { return W(x, P(2, x-1)); } int main() { cin >> n; if (n == 1) { puts("1"); return 0; } int VV = 0, VE = 0, EE = 0; for (int i = 1; i <= n; i++) VV = A(VV, SUM(n - 1)); // 点、边 int u, v; for (int i = 1; i < n; i++) { scanf("%d%d", &u, &v); b[make_pair(u, v)] = b[make_pair(v, u)] = true; d[u]++, d[v]++; VE = A(VE, SUM(n-2)); } // 边、边 if (n >= 4) { for (int i = 1; i < n; i++) { scanf("%d%d", &u, &v); EE = A(EE, (MOD + (n - 1 - d[u] - d[v])) % MOD); if (b.count(make_pair(u, v))) EE = A(EE, 1); } EE = W(EE, P(2, n - 4)); } int res = A(S(S(VV, VE), VE), EE); // cout << res << endl; cout << D(res, P(2, n)) << endl; return 0; }


测评信息: