Submission #585246

#TimeUsernameProblemLanguageResultExecution timeMemory
585246MrDeboo경주 (Race) (IOI11_race)C++17
Compilation error
0 ms0 KiB
#include "race.h" #include <stdio.h> #include <stdlib.h> #include <bits/stdc++.h> using namespace std; #define MAX_N 500000 static int N, K; static int H[MAX_N][2]; static int L[MAX_N]; static int solution; inline void my_assert(int e) {if (!e) abort();} void read_input() { int i; my_assert(2==scanf("%d %d",&N,&K)); for(i=0; i<N-1; i++) my_assert(3==scanf("%d %d %d",&H[i][0],&H[i][1],&L[i])); my_assert(1==scanf("%d",&solution)); } vector<pair<int,int>>vct[500000]; pair<pair<long long,int>,map<long long,long long>>pr[500000]; long long ans=LONG_LONG_MAX,k; void dfs(int in){ if(vct[in].empty()){ pr[in].second[0]=0; return; } for(auto &i:vct[in])dfs(i.first); int f=0,g=0; for(int i=0;i<vct[in].size();i++){ if(pr[vct[in][i].first].second.size()>f){ f=pr[vct[in][i].first].second.size(); g=i; } } swap(pr[in],pr[vct[in][g].first]); pr[in].first.first+=vct[in][g].second; pr[in].first.second++; pr[in].second[-pr[in].first.first]=-pr[in].first.second; if(pr[in].second.count(k-pr[in].first.first)){ ans=min(ans,pr[in].second[k-pr[in].first.first]+pr[in].first.second); } for(int i=0;i<vct[in].size();i++){ if(i==g)continue; for(auto &w:pr[vct[in][i].first].second){ long long a=w.first+pr[vct[in][i].first].first.first+vct[in][i].second,b=w.second+pr[vct[in][i].first].first.second+1; long long G=k-a-pr[in].first.first; if(pr[in].second.count(G)){ ans=min(ans,pr[in].second[G]+pr[in].first.second+b); } a-=pr[in].first.first,b-=pr[in].first.second; if(!pr[in].second.count(a))pr[in].second[a]=b; else pr[in].second[a]=min(pr[in].second[a],b); } } } int best_path(int n, int K, int h[][2], int l[]){ k=K; vector<pair<int,int>>vec[n]; for(int i=0;i<n-1;i++){ vec[h[i][0]].push_back({h[i][1],l[i]}); vec[h[i][1]].push_back({h[i][0],l[i]}); } deque<int>dq={0}; vector<bool>vis(n); vis[0]=1; while(dq.size()){ int a=dq.front(); dq.pop_front(); for(auto &i:vec[a]){ if(!vis[i.first]){ vis[i.first]=1; vct[a].push_back(i); dq.push_back(i.first); } } } dfs(0); return (ans==LONG_LONG_MAX?-1:ans); } int main() { int ans; read_input(); ans = best_path(N,K,H,L); if(ans==solution) printf("Correct.\n"); else printf("Incorrect. Returned %d, Expected %d.\n",ans,solution); return 0; }

Compilation message (stderr)

race.cpp: In function 'void dfs(int)':
race.cpp:36:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for(int i=0;i<vct[in].size();i++){
      |                 ~^~~~~~~~~~~~~~~
race.cpp:37:46: warning: comparison of integer expressions of different signedness: 'std::map<long long int, long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   37 |         if(pr[vct[in][i].first].second.size()>f){
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
race.cpp:49:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |     for(int i=0;i<vct[in].size();i++){
      |                 ~^~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccibhfhU.o: in function `read_input()':
race.cpp:(.text+0x280): multiple definition of `read_input()'; /tmp/ccOvAxvX.o:grader.cpp:(.text+0x0): first defined here
/usr/bin/ld: /tmp/ccibhfhU.o: in function `main':
race.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccOvAxvX.o:grader.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status