제출 #1150041

#제출 시각아이디문제언어결과실행 시간메모리
1150041knhatdev경주 (Race) (IOI11_race)C++17
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> #define ii pair<int,int> #define fi first #define se second // #define int long long #define task "" using namespace std; const int maxn = 1e6 + 10, mod = 1e9 + 7; const int oo = 1e9; int n, k, ans, mi[maxn], ma_h; int sz[maxn], h[maxn], par[maxn]; bool is_centroid[maxn]; vector<ii> g[maxn]; void dfs(int u, int par){ sz[u] = 1; for(ii k : g[u]){ int v = k.fi, c = k.se; if(v == par || is_centroid[v]) continue; dfs(v, u); sz[u] += sz[v]; } } int find_centroid(int u, int sz_tree, int par){ for(ii k : g[u]){ int v = k.fi, c = k.se; if(v != par && !is_centroid[v] && sz[v] > sz_tree/2) return find_centroid(v, sz_tree, u); } return u; } void get(int u, int par, int h, int w, int t){ if(w > k) return; if(t == 0) ans = min(ans, mi[k - w] + h); else mi[w] = min(mi[w], h); ma_h = max(ma_h, w); for(ii k : g[u]){ int v = k.fi, c = k.se; if(v == par || is_centroid[v]) continue; get(v, u, h + 1, w + c, t); } } void build_centroid(int u, int par){ dfs(u, -1); int centroid = find_centroid(u, sz[u], -1); // cout << u << ' ' << sz[u] << '\n'; // cout << u << ' ' << centroid << '\n'; is_centroid[centroid] = 1; for(ii k : g[centroid]){ int v = k.fi, c = k.se; if(!is_centroid[v]){ get(v, centroid, 1, c, 0); get(v, centroid, 1, c, 1); } } for(int i = 1; i <= ma_h; i++) mi[i] = oo; for(ii k : g[centroid]){ int v = k.fi; if(!is_centroid[v]) build_centroid(v, centroid); } } int best_path(int N, int K, int H[][2], int L[]){ n = N; k = K; for(int i = 0; i < n - 1; i++){ H[i][0]++; H[i][1]++; g[H[i][0]].push_back(ii(H[i][1], L[i])); g[H[i][1]].push_back(ii(H[i][0], L[i])); } for(int i = 1; i <= k; i++) mi[i] = oo; ans = oo; build_centroid(1, -1); return (ans == oo ? -1 : ans); } main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if(fopen(task ".inp", "r")){ freopen(task ".inp", "r", stdin); freopen(task ".out", "w", stdout); } int N, K; int H[1000005][2], L[1000005]; cin >> N >> K; for(int i = 0; i < N - 1; i++){ cin >> H[i][0] >> H[i][1] >> L[i]; } cout << best_path(N, K, H, L); }

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

race.cpp:80:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   80 | main(){
      | ^~~~
race.cpp: In function 'int main()':
race.cpp:83:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   83 |         freopen(task ".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:84:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   84 |         freopen(task ".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccyGBXQp.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccDF9Uwg.o:race.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status