제출 #1279343

#제출 시각아이디문제언어결과실행 시간메모리
1279343vuquangsang경주 (Race) (IOI11_race)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define el "\n" #define FOR(i,a,b) for(int i = (a), _b = (b); i <= _b; i++) #define FORD(i,a,b) for(int i = (a), _b = (b); i >= _b; i--) #define pb push_back #define fi first #define se second #define all(x) x.begin(),x.end() #define lg(x) __lg(x) #define alla(a,n) a+1,a+n+1 #define ll long long template <class T> bool maxi(T &x, T y) { if(x < y) { x = y ; return true ;} return false;} template <class T> bool mini(T &x, T y) { if(x > y) { x = y ; return true ;} return false;} const int N = 1e6 + 2; const int maxT = 1e6 + 2; int n, L; vector<pair<int, int>> adj[N]; void inp() { cin >> n >> L; FOR(i, 1, n - 1) { int x, y, w; cin >> x >> y >> w; x++; y++; adj[x].pb({y, w}); adj[y].pb({x, w}); } } /* Try your best No regrets */ namespace subtask_1 { #define pii pair<int, int> bool vis[N]; int sz[N]; void dfs_sz(int u, int p) { sz[u] = 1; for(pii x : adj[u]) { int v = x.fi, w = x.se; if(v == p || vis[v]) continue; dfs_sz(v, u); sz[u] += sz[v]; } } int centroid(int u, int p, int n) { for(pii x : adj[u]) { int v = x.fi; if(v == p || vis[v]) continue; if(sz[v] > n / 2) return centroid(v, u, n); } return u; } int minDist[maxT]; int ans = -1; void dfsAns(int u, int p, int depth, int dis) { if(dis <= L ){ if(minDist[L - dis] != -1) mini(ans, depth + minDist[L - dis]); } for(pii x : adj[u]) { int v = x.fi, w = x.se; if(v == p || vis[v]) continue; dfsAns(v, u, depth + 1, dis + w); } } void dfsUpd(int u, int p, int depth, int dis) { if(dis <= L) { if(minDist[dis] == -1) minDist[dis] = depth; else mini(minDist[dis], depth); } for(pii x : adj[u]) { int v = x.fi, w = x.se; if(v == p || vis[v]) continue; dfsUpd(v, u, depth + 1, dis + w); } } void dfsReset(int u, int p, int depth, int dis) { if(dis <= L) { minDist[dis] = -1; } for(pii x : adj[u]) { int v = x.fi, w = x.se; if(v == p || vis[v]) continue; dfsReset(v, u, depth + 1, dis + w); } } void Calc(int u) { vis[u] = 1; dfs_sz(u, 0); minDist[0] = 0; for(pii x : adj[u]) { int v = x.fi, w = x.se; if(vis[v]) continue; dfsAns(v, u, 1, w); dfsUpd(v, u, 1, w); } minDist[0] = -1; for(pii x : adj[u]) { int v = x.fi, w = x.se; if(vis[v]) continue; dfsReset(v, u, 1, w); } for(pii x : adj[u]) { int v = x.fi; if(vis[v]) continue; Calc(centroid(v, u, sz[v])); } } void slv() { if(!L ){ cout << 0; return; } FOR(i, 1, L) minDist[i] = -1; ans = n + 1; dfs_sz(1, 0); Calc(centroid(1, 0, n)); cout << (ans == n + 1 ? -1 : ans); } } /* Code slowly, think carefully */ main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define __Azul__ "race" if(fopen(__Azul__".inp", "r")) { freopen(__Azul__".inp", "r", stdin); freopen(__Azul__".out", "w", stdout); } bool qs = 0; int T = 1; if(qs) cin >> T; while(T--) { inp(); subtask_1::slv(); } cerr << "\nTime" << 0.001 * clock() << "s "; return 0; }

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

race.cpp:153:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  153 | main()
      | ^~~~
race.cpp: In function 'int main()':
race.cpp:159:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  159 |         freopen(__Azul__".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:160:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  160 |         freopen(__Azul__".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccJCdm6y.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccZDl9w9.o:race.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccJCdm6y.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