제출 #349908

#제출 시각아이디문제언어결과실행 시간메모리
349908Pety경주 (Race) (IOI11_race)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#include "race.h"


using namespace std;

const int N = 2e5 + 2;
vector<pair<int, long long> >G[N];
set<pair<long long, int> > s[N];
long long dist[N], edge[N], k;
int ans;

///a + b - 2 * dist

void dfs (int nod, int p) {
  s[nod].insert({dist[nod], edge[nod]});
  for (auto it : G[nod]) {
    if (it.first == p)
      continue;
    dist[it.first] = dist[nod] + it.second;
    edge[it.first] = edge[nod] + 1;
    dfs(it.first, nod);
    if (s[nod].size() < s[it.first].size())
      swap(s[nod], s[it.first]);
    for (auto it2 : s[it.first]) {
      auto meh = s[nod].lower_bound({k - it2.first + 2 * dist[nod], 0});
      if (meh->first + it2.first -2 * dist[nod] == k) {
        ans = min(ans, it2.second + (*meh).second - 2 * edge[nod]);
      }
    }
    for (auto it2 : s[it.first])
      s[nod].insert(it2);
  }
}

int best_path (int n, int K, int h[][2], int l[]) {
  for (int i = 0; i < n - 1; i++) {
    G[h[i][0]].push_back({h[i][1], l[i]});
    G[h[i][1]].push_back({h[i][0], l[i]});
  }
  k = K;
  ans = n;
  dfs(0, -1);
  return ans;
}

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

race.cpp: In function 'void dfs(int, int)':
race.cpp:28:66: error: no matching function for call to 'min(int&, long long int)'
   28 |         ans = min(ans, it2.second + (*meh).second - 2 * edge[nod]);
      |                                                                  ^
In file included from /usr/include/c++/9/bits/char_traits.h:39,
                 from /usr/include/c++/9/ios:40,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from race.cpp:1:
/usr/include/c++/9/bits/stl_algobase.h:198:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  198 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/9/bits/stl_algobase.h:198:5: note:   template argument deduction/substitution failed:
race.cpp:28:66: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   28 |         ans = min(ans, it2.second + (*meh).second - 2 * edge[nod]);
      |                                                                  ^
In file included from /usr/include/c++/9/bits/char_traits.h:39,
                 from /usr/include/c++/9/ios:40,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream:38,
                 from /usr/include/c++/9/complex:45,
                 from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from race.cpp:1:
/usr/include/c++/9/bits/stl_algobase.h:246:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  246 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/9/bits/stl_algobase.h:246:5: note:   template argument deduction/substitution failed:
race.cpp:28:66: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'long long int')
   28 |         ans = min(ans, it2.second + (*meh).second - 2 * edge[nod]);
      |                                                                  ^
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from race.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:3444:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3444 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/9/bits/stl_algo.h:3444:5: note:   template argument deduction/substitution failed:
race.cpp:28:66: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   28 |         ans = min(ans, it2.second + (*meh).second - 2 * edge[nod]);
      |                                                                  ^
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from race.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:3450:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3450 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/9/bits/stl_algo.h:3450:5: note:   template argument deduction/substitution failed:
race.cpp:28:66: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   28 |         ans = min(ans, it2.second + (*meh).second - 2 * edge[nod]);
      |                                                                  ^