# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1162475 | brinton | Road Closures (APIO21_roads) | C++20 | 2096 ms | 21904 KiB |
#include "roads.h"
#include <bits/stdc++.h>
using namespace std;
int k;
vector<vector<pair<int,int>>> edges;
pair<long long,long long> dfs(int cur,int par){
vector<pair<long long,long long>> child;// not delete parent, delete parent
for(auto [nxt,w]:edges[cur]){
if(nxt == par)continue;
auto [np,cp] = dfs(nxt,cur);
child.push_back({np,cp+w});
}
long long base = 0;
vector<long long> diff;
for(auto [np,cp]:child){
base += np;
diff.push_back(cp-np);
}
sort(diff.begin(),diff.end());
int out = 1+child.size();
int del = out-k;// k must greater than 1
pair<long long,long long> result;// not delete parent, delete parent
long long ndelp = base,delp = base;
// ndel parent, (all del on child)
for(int i = 0;i < del;i++){
ndelp += diff[i];
}
// not chose p,
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |