답안 #928180

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
928180 2024-02-16T03:33:52 Z Darren0724 Designated Cities (JOI19_designated_cities) C++17
9 / 100
353 ms 66956 KB
#include <bits/stdc++.h>
using namespace std;
#define LCBorz ios_base::sync_with_stdio(false); cin.tie(0);
#define int long long
#define all(x) x.begin(), x.end()
#define endl '\n'
const int N=200005;
const int INF=1e18;
int n;
vector<pair<int,int>> adj[N],adj1[N];
vector<int> rec(N),deep(N);
vector<int> v(N);
pair<int,int> best_pair;
int best=0;
void dfs1(int k,int pa){
    for(auto [j,c]:adj[k]){
        if(j==pa)continue;
        v[1]+=c;
        dfs1(j,k);
    }
} 
void dfs2(int k,int pa,int now){
    for(auto [j,c]:adj[k]){
        if(j==pa)v[k]=now+c;
    }
    for(auto [j,c]:adj[k]){
        if(j==pa)continue;
        dfs2(j,k,v[k]-c);
    }
}
void dfs3(int k,int pa){
    vector<int> t(1,k);
    for(auto [j,c]:adj1[k]){
        if(j==pa)continue;
        deep[j]=deep[k]+c;
        dfs3(j,k);
        t.push_back(rec[j]);
    }
    sort(all(t),[&](int a,int b){return v[a]+deep[a]>v[b]+deep[b];});
    rec[k]=t[0];
    if(t.size()==1)return;
    int cost=v[t[0]]+deep[t[0]]+v[t[1]]+deep[t[1]]-2*deep[k];
    if(cost>best){
        best=cost;
        best_pair={t[0],t[1]};
    }
}
int32_t main() {
    LCBorz;
    int n;cin>>n;
    int total=0;
    for(int i=1;i<n;i++){
        int a,b,c,d;cin>>a>>b>>c>>d;
        adj[a].push_back({b,d});
        adj[b].push_back({a,c});
        adj1[a].push_back({b,c+d});
        adj1[b].push_back({a,c+d});
        total+=c+d;
    }
    dfs1(1,1);
    dfs2(1,1,v[1]);
    dfs3(1,1);
    best/=2;
    int mx=*max_element(all(v));
    cout<<total-best<<endl;
    

    return 0;
}

Compilation message

designated_cities.cpp: In function 'int32_t main()':
designated_cities.cpp:64:9: warning: unused variable 'mx' [-Wunused-variable]
   64 |     int mx=*max_element(all(v));
      |         ^~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 14428 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 14424 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 14428 KB Output is correct
2 Correct 268 ms 41240 KB Output is correct
3 Correct 353 ms 66956 KB Output is correct
4 Correct 253 ms 39932 KB Output is correct
5 Correct 258 ms 42292 KB Output is correct
6 Correct 279 ms 44968 KB Output is correct
7 Correct 188 ms 43556 KB Output is correct
8 Correct 310 ms 55596 KB Output is correct
9 Correct 157 ms 44836 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 14428 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 14424 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 14428 KB Output isn't correct
2 Halted 0 ms 0 KB -