Submission #1192437

#TimeUsernameProblemLanguageResultExecution timeMemory
1192437faricaRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
#include "race.h"

using namespace std;
using vi = vector<int>;
using pi = pair<int,int>;
typedef long long ll;

int ans, k;
vi depth;
vector<map<int,int>>paths;
vector<vector<pi>>adjL;

void dfs(int pos, int prev, int sum) {
	for(pi adj: adjL[pos]) {
		if(adj.first == prev) continue;
		depth[adj.first] = depth[pos] + 1;
		dfs(adj.first, pos, sum + adj.second);
		if(paths[adj.first].size() > paths[pos].size()) swap(paths[adj.first], paths[pos]);
		for(auto it = paths[adj.first].begin(); it != paths[adj.first].end(); ++it) {
			if(!paths[pos][it->first]) paths[pos][it->first] = it->second;
			else paths[pos][it->first] = min(paths[pos][it->first], it->second);
		}
	}
	if(paths[pos][sum+K]) {
		int cur = paths[pos][sum+K] - depth[pos];
		if(ans == -1) ans = cur;
		else ans = min(ans, cur);
	}
}

int best_path(int N, int K, int H[][2], int L[]) {	
  ans = -1, k = K;
  paths.resize(N);
  depth.assign(N, 0);
  adjL.assign(N, vi());
  for(int i=0; i<n-1; ++i) {
	adjL[H[i][0]].push_back({H[i][1], L[i]});
	adjL[H[i][1]].push_back({H[i][0], L[i]});
  }
  dfs(0,0);
  
  return ans;
}

Compilation message (stderr)

race.cpp: In function 'void dfs(int, int, int)':
race.cpp:25:27: error: 'K' was not declared in this scope
   25 |         if(paths[pos][sum+K]) {
      |                           ^
race.cpp: In function 'int best_path(int, int, int (*)[2], int*)':
race.cpp:36:14: error: no matching function for call to 'std::vector<std::vector<std::pair<int, int> > >::assign(int&, vi)'
   36 |   adjL.assign(N, vi());
      |   ~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/11/vector:67,
                 from /usr/include/c++/11/functional:62,
                 from /usr/include/c++/11/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/11/algorithm:74,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from race.cpp:1:
/usr/include/c++/11/bits/stl_vector.h:768:9: note: candidate: 'template<class _InputIterator, class> void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; <template-parameter-2-2> = <template-parameter-1-2>; _Tp = std::vector<std::pair<int, int> >; _Alloc = std::allocator<std::vector<std::pair<int, int> > >]'
  768 |         assign(_InputIterator __first, _InputIterator __last)
      |         ^~~~~~
/usr/include/c++/11/bits/stl_vector.h:768:9: note:   template argument deduction/substitution failed:
race.cpp:36:14: note:   deduced conflicting types for parameter '_InputIterator' ('int' and 'std::vector<int>')
   36 |   adjL.assign(N, vi());
      |   ~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/11/vector:67,
                 from /usr/include/c++/11/functional:62,
                 from /usr/include/c++/11/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/11/algorithm:74,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from race.cpp:1:
/usr/include/c++/11/bits/stl_vector.h:749:7: note: candidate: 'void std::vector<_Tp, _Alloc>::assign(std::vector<_Tp, _Alloc>::size_type, const value_type&) [with _Tp = std::vector<std::pair<int, int> >; _Alloc = std::allocator<std::vector<std::pair<int, int> > >; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = std::vector<std::pair<int, int> >]'
  749 |       assign(size_type __n, const value_type& __val)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_vector.h:749:47: note:   no known conversion for argument 2 from 'vi' {aka 'std::vector<int>'} to 'const value_type&' {aka 'const std::vector<std::pair<int, int> >&'}
  749 |       assign(size_type __n, const value_type& __val)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~
/usr/include/c++/11/bits/stl_vector.h:794:7: note: candidate: 'void std::vector<_Tp, _Alloc>::assign(std::initializer_list<_Tp>) [with _Tp = std::vector<std::pair<int, int> >; _Alloc = std::allocator<std::vector<std::pair<int, int> > >]'
  794 |       assign(initializer_list<value_type> __l)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_vector.h:794:7: note:   candidate expects 1 argument, 2 provided
race.cpp:37:18: error: 'n' was not declared in this scope
   37 |   for(int i=0; i<n-1; ++i) {
      |                  ^
race.cpp:41:6: error: too few arguments to function 'void dfs(int, int, int)'
   41 |   dfs(0,0);
      |   ~~~^~~~~
race.cpp:14:6: note: declared here
   14 | void dfs(int pos, int prev, int sum) {
      |      ^~~