제출 #983697

#제출 시각아이디문제언어결과실행 시간메모리
983697vjudge1도로 폐쇄 (APIO21_roads)C++17
0 / 100
35 ms10632 KiB
#include <bits/stdc++.h>
using namespace std;
// #define int long long
#define fastio ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define nl "\n"

const int maxn = 100005;
vector<pair<int, int> > adjlist[maxn];
int dp[maxn][2];

vector<int64_t> minimum_closure_costs(int N, vector<int> U, vector<int> V, vector<int> W){
    for (int i=0; i<N-1; i++){
        adjlist[U[i]].push_back(make_pair(W[i], V[i])); //weight, node
        adjlist[V[i]].push_back(make_pair(W[i], U[i]));
    }
    for (auto i : adjlist) sort(i.begin(), i.end());
    
    // subtask 1
    // vector<int64_t> ans;
    // int cursum = 0;
    // ans.push_back(cursum);
    // for (auto i : adjlist[0]){
    //     cursum += i.first;
    //     ans.push_back(cursum);
    // }
    // reverse(ans.begin(), ans.end());

    // subtask 2
    dp[0][0] = INT_MAX;
    dp[0][1] = 0;
    for (int i=1; i<N; i++){
        dp[i][0] = dp[i-1][1];
        dp[i][1] = min(dp[i-1][0], dp[i-1][1]) + adjlist[i-1][1].first;
        // dp[i][1] = min(dp[i-1][0], dp[i-1][1]) + W[i];
    }
    int64_t ansarr[] = {min(dp[N-1][0], dp[N-1][1]), 0};
    vector<int64_t> ans(begin(ansarr), end(ansarr));
    return ans;
}
#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...