結果
問題 |
No.1507 Road Blocked
|
ユーザー |
![]() |
提出日時 | 2023-03-31 00:35:55 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 108 ms / 2,000 ms |
コード長 | 1,228 bytes |
コンパイル時間 | 3,541 ms |
コンパイル使用メモリ | 251,876 KB |
最終ジャッジ日時 | 2025-02-11 19:24:44 |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using namespace atcoder; using ll=long long; using ld=long double; ld pie=3.141592653589793; ll mod=998244353; ll inf=999999999999999999; ll bb,ee; void dfs(ll now,vector<vector<ll>>&g,vector<ll>&dp,vector<ll>&ko){ dp[now]=0; ko[now]=1; ll n=g.size(); for (ll i = 0; i < g[now].size(); i++) { if (dp[g[now][i]]==-1) { dfs(g[now][i],g,dp,ko); ko[now]+=ko[g[now][i]]; dp[now]+=dp[g[now][i]]; dp[now]%=mod; ll y=(ko[g[now][i]]*(ko[g[now][i]]-1))/2; y%=mod; y+=((n-ko[g[now][i]])*(n-ko[g[now][i]]-1))/2; y%=mod; y*=bb; y%=mod; y*=ee; y%=mod; dp[now]+=y; dp[now]%=mod; } } } int main(){ ll n; cin >> n; bb=inv_mod((n*(n-1))/2,mod); ee=inv_mod(n-1,mod); vector<vector<ll>>g(n); for (ll i = 0; i < n-1; i++) { ll u,v; cin >> u >> v; u--,v--; g[u].push_back(v); g[v].push_back(u); } vector<ll>dp(n,-1); vector<ll>ko(n,-1); dfs(0,g,dp,ko); cout << dp[0] << endl; }