제출 #1361344

#제출 시각아이디문제언어결과실행 시간메모리
1361344sampaio_kk경주 (Race) (IOI11_race)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#define _ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define int long long
#define fr first
#define sc second
#define all(x) x.begin(), x.end()
#define inv(x) x, vector<x>, greater<x>
#define lsb(x) (x&-x)
#define pb push_back
#define me max_element
#define pq priority_queue
using namespace std;
using pii = pair<int, int>;
using pip = pair<int, pii>;
using ppp = pair<pii, pii>;
const int mod7 = 1000000007, mod9 = 998244353, ln = 23, inf = 1e18, N = 2e5 + 5;
struct ed{
        int w, a;
};
int K, ans = inf;
vector<ed> g[N];
int depth[N], dist[N];
map<int, int> mp[N];
void merge(map<int, int>& a, map<int, int>& b, int v){
        if(a.size() < b.size()) swap(a, b);
        for(auto [x, dp]:b){
                int need = K + 2*dist[v] - x;
                if(a.count(need)){
                        ans = min(ans, dp + a[need] - 2*depth[v]);
                }
        }
        for(auto[x, dp]:b){
                if(a.count(x)){
                        a[x] = min(a[x], dp);
                }
                else{
                        a[x] = dp;
                }
        }
}
void dfs(int v, int p){
        mp[v][dist[v]] = depth[v];
        for(auto [iw, i]:g[v]){
                if(i == p) continue;
                depth[i] = depth[v] + 1;
                dist[i] = dist[v] + iw;
                dfs(i, v);
                merge(mp[v], mp[i], v);
        }
}
int best_path(int n, int k, int h[][2], int l[]){
        K = k;
        for(int i = 0; i < n-1; i++){
                int a = h[i][0], b = h[i][1];
                int w = l[i];
                g[a].pb({w, b});
                g[b].pb({w, a});
        }
        dfs(0, 0);
        
        // for(int i = 0; i < n; i++){
        //         cout << i << ": ";
        //         for(auto [d, dp]:mp[i]){
        //                 cout << d << ' ' << dp << ", ";
        //         }
        //         cout << '\n';
        // }
        // for(auto [d, dp]:mp[0]) cout << d << ' ' << dp << '\n';
        return (ans == inf ? -1:ans);
}

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

/usr/bin/ld: /tmp/ccoVBLnQ.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