Submission #1261325

#TimeUsernameProblemLanguageResultExecution timeMemory
1261325phamducluongRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //using namespace __gnu_pbds; using namespace std; using ll=long long; //typedef tree<int,null_type,less_equal<int>,rb_tree_tag, tree_order_statistics_node_update> ordered_set; #define mem(a,x) memset(a,x,sizeof(a)) #define fast(s) s.reserve(2000); s.max_load_factor(0.5); #define F first #define S second #define pii pair <int, int> #define all(p) p.begin(), p.end() template<typename T> bool maximum(T &A, const T &B) {return A<B? A=B, true: false;} template<typename T> bool minimum(T &A, const T &B) {return A>B? A=B, true: false;} const int mod=998244353; const int base=2999; const int INF=1e9; const int N=2e5+2, LOG=30, M=1e6+5; int n, k, cnt[N], mn[M]; ll res; bool del[N]; vector<pii> e[N]; void file() { #define task "codeforces" if(fopen(task".inp","r")) { freopen(task".inp","r",stdin); freopen(task".out","w",stdout); } ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); } void Count(int u, int pre) { cnt[u]=1; for(auto [v,_]: e[u]) { if(v==pre || del[v]) continue; Count(v,u); cnt[u]+=cnt[v]; } } int centroid(int u, int pre, int n) { for(auto [v,_]: e[u]) { if(v==pre || del[v]) continue; if(cnt[v]>n/2) return centroid(v,u,n); } return u; } void DFS(int u, int pre, int d, int len) { if(d==k) minimum(res,(ll)len); if(d>k) return; minimum(res,(ll)len+mn[k-d]); for(auto [v,w]: e[u]) { if(v==pre || del[v]) continue; DFS(v,u,d+w,len+1); } } void update(int u, int pre, int d, int len, bool ok) { if(d>k) return; if(ok) minimum(mn[d],len); else mn[d]=INF; for(auto [v,w]: e[u]) { if(v==pre || del[v]) continue; update(v,u,d+w,len+1,ok); } } void calc(int u) { Count(u,0); u=centroid(u,0,cnt[u]); for(auto [v,w]: e[u]) { if(del[v]) continue; DFS(v,u,w,1); update(v,u,w,1,1); } for(auto [v,w]: e[u]) { if(del[v]) continue; update(v,u,w,1,0); } del[u]=1; for(auto [v,_]: e[u]) { if(del[v]) continue; calc(v); } } void Solve() { cin>>n>>k; for(int i=1; i<n; ++i) { int u, v, w; cin>>u>>v>>w; e[u].push_back({v,w}); e[v].push_back({u,w}); } res=INF; fill(mn,mn+M,INF); calc(0); cout<<(res==INF? -1: res); } signed main() { file(); Solve(); return 0; }

Compilation message (stderr)

race.cpp: In function 'void file()':
race.cpp:29:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   29 |         freopen(task".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
race.cpp:30:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |         freopen(task".out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccsndfou.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccz4jTnX.o:race.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccsndfou.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