Submission #1164348

#TimeUsernameProblemLanguageResultExecution timeMemory
1164348tw20000807도로 폐쇄 (APIO21_roads)C++20
0 / 100
201 ms17744 KiB
#include "roads.h" #include<bits/stdc++.h> using namespace std; vector<long long> minimum_closure_costs(int n, vector<int> u, vector<int> v, vector<int> w){ #define all(v) v.begin(), v.end() #define int long long #define pii pair<int, int> #define X first #define Y second #define SZ(s) ((int)s.size()) vector< vector< pii > > g(n); vector< int > ans(n); for(int i = 0; i < n - 1; ++i){ g[u[i]].push_back({v[i], w[i]}); g[v[i]].push_back({u[i], w[i]}); } vector< int > ord(n); iota(all(ord), 0); sort(all(ord), [&](int a, int b){ return SZ(g[a]) > SZ(g[b]); }); for(int k = 0; k < n; ++k){ map<int, int> vis; auto dfs = [&](auto dfs, int cur, int par, int d = 0) -> void { vis[cur] = 1; ans[k] += SZ(g[cur]) - k; for(auto &[nxt, w] : g[cur]) if(!vis[nxt] && SZ(g[nxt]) > k) { dfs(dfs, nxt, cur, w); } if(cur != par){ ans[k]--; } }; for(auto &id : ord){ if(SZ(g[id]) <= k) break; if(!vis[id]) dfs(dfs, id, id); } } return ans; } /* 5 0 1 1 0 2 1 0 3 1 0 4 1 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...