제출 #941327

#제출 시각아이디문제언어결과실행 시간메모리
941327Icelast경주 (Race) (IOI11_race)C++17
컴파일 에러
0 ms0 KiB
#include <iostream>
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn = 5*1e5+5, INF = 4e18+9;
int n, k;
vector<pair<ll, ll>> adj[maxn];
void inp(){
    cin >> n >> k;
    ll u, v, w;
    for(int i = 1; i < n; i++){
        cin >> u >> v >> w;
        u++; v++;
        adj[u].push_back({v, w});
        adj[v].push_back({u, w});
    }
}
map<ll, ll> f[maxn];
ll dr[maxn], er[maxn];
void glen(int u, int p, ll d, int e){
    dr[u] = d; er[u] = e;
    for(auto it : adj[u]){
        int v = it.first;
        ll w = it.second;
        if(v == p) continue;
        glen(v, u, d+w, e+1);
    }
}
ll ans = INF;
void merg(int u, int v){
    if(f[u].size() < f[v].size()){
        swap(f[u], f[v]);
    }
    for(auto it : f[v]){
        if(f[u].find(k-it.first+2*dr[u]) == f[u].end()) continue;
        ans = min(ans, it.second+f[u][k-it.first+2*dr[u]]-2*er[u]);
    }
    for(auto it : f[v]){
        if(f[u].find(it.first) == f[u].end()){
            f[u][it.first] = it.second;
            continue;
        }
        f[u][it.first] = min(f[u][it.first], it.second);
    }
}
void dfs(int u, int p){
    f[u][dr[u]] = er[u];
    for(auto it : adj[u]){
        int v = it.first;
        ll w = it.second;
        if(v == p) continue;
        dfs(v, u);
        merg(u, v);
    }
//    cout << u << "  " << er[u] << "\n";
//    for(auto it : f[u]){
//        cout << it.first-dr[u] << " " << it.second-er[u] << "\n";
//    }
//    cout << "\n";
}
void solve(){
    glen(1, 1, 0, 0);
    dfs(1, 1);
    if(ans == INF) ans = -1;
    cout << ans;
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    inp();
    solve();
}

컴파일 시 표준 에러 (stderr) 메시지

race.cpp: In function 'void dfs(int, int)':
race.cpp:50:12: warning: unused variable 'w' [-Wunused-variable]
   50 |         ll w = it.second;
      |            ^
/usr/bin/ld: /tmp/ccGVHris.o: in function `main':
race.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccdetVEo.o:grader.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccdetVEo.o: in function `main':
grader.cpp:(.text.startup+0x28): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status