This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "roads.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<int> d,u,v;
int get(int i,int k){
int ans = (d[u[i]] > k) + (d[v[i]] > k);
return ans;
}
vector<long long> minimum_closure_costs(int N,vector<int> U,vector<int> V,vector<int> W) {
u = U;
v = V;
vector<int> deg(N,0);
for(int i = 0;i < N - 1;i++){
deg[U[i]]++;
deg[V[i]]++;
}
vector<ll> ans;
for(int i = 0;i < N;i++){
d = deg;
set<pair<int,int>> st;
for(int j = 0;j < N - 1;j++){
st.insert({0,j});
}
ll res =0;
while(!st.empty()){
auto[c,j] = (*st.begin());
st.erase({c,j});
int _ = get(j,i),rc = W[j];
// cout << j << ' ' << _ << '\n';
if(_ == 0) continue;
if(_ == 1) rc = rc + rc;
if(c != rc){
st.insert({rc,j});
continue;
}
res += W[j];
d[u[j]]--;
d[v[j]]--;
}
// cout << '\n';
ans.push_back(res);
}
return ans;
}
# | 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... |