답안 #297785

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
297785 2020-09-11T22:40:29 Z Haunted_Cpp 악어의 지하 도시 (IOI11_crocodile) C++17
컴파일 오류
0 ms 0 KB
#include "crocodile.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long i64;
const int MAX_N = 1e5 + 5;

vector<vector<pair<int, int>>> g(MAX_N);
bitset<MAX_N> is_exit;

int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) {
  for (int i = 0; i < M; i++) {
    g[R[i][0]].emplace_back(R[i][1], L[i]);
    g[R[i][1]].emplace_back(R[i][0], L[i]);
  }
  for (int i = 0; i < K; i++) {
    is_exit[P[i]] = 1;
  }
  
  priority_queue<pair<i64, int>, vector<pair<i64, int>>, greater<pair<i64, int>>> pq;
  vector<i64> closest_one(N, 1e18);
  for (int i = 0; i < K; i++) {
    closest_one[P[i]] = 0;
    pq.emplace(closest_one[P[i]], P[i]);
  }
  while(!pq.empty()) {
    auto [w, node] = pq.top();
    pq.pop();
    if (w != closest_one[node]) {
      continue;
    }
    for (auto [to, cost] : g[node]) {
      if (closest_one[to] > closest_one[node] + cost) {
        closest_one[to] = closest_one[node] + cost;
        pq.emplace(closest_one[to], to);
      }
    }
  }
  
  auto Dijkstra = [&](int is_blocked) {
    vector<i64> dist(N, 1e18);
    priority_queue<pair<i64, int>, vector<pair<i64, int>>, greater<pair<i64, int>>> pq;
    dist[0] = 0;
    pq.emplace(dist[0], 0);
    while(!pq.empty()) {
      auto [w, node] = pq.top();
      pq.pop();
      if (w != dist[node]) {
        continue;
      }
      bool type = false;
      for (auto [to, cost] : g[node]) {
        if (to == is_blocked) {
          type = true;
        }
      }
      pair<i64, int> is_blocked = {1e18, 1e9};
      for (auto [to, cost] : g[node]) {
        is_blocked = min(is_blocked, {closest_one[to] + cost , to});
      }
      for (auto [to, cost] : g[node]) {
        if (type) {
          if (to == is_blocked) {
            continue;
          }
        } else {
          if (to == is_blocked.second) {
            continue;
          }
        }
        if (dist[to] > dist[node] + cost) {
          dist[to] = dist[node] + cost;
          pq.emplace(dist[to], to);
        }
      }
    }
    i64 mn = 1e18;
    for (int i = 0; i < N; i++) {
      if (is_exit[i] && is_blocked != i) {
        mn = min(mn, dist[i]);
      }
    }
    return mn;
  };
  
  i64 best_way = 0;
  for (int i = 0; i < K; i++) {
    best_way = max(best_way, Dijkstra(P[i]));
  }
  return best_way;
}


Compilation message

crocodile.cpp: In lambda function:
crocodile.cpp:63:18: error: no match for 'operator==' (operand types are 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'} and 'std::pair<long long int, int>')
   63 |           if (to == is_blocked) {
      |               ~~ ^~ ~~~~~~~~~~
      |               |     |
      |               |     std::pair<long long int, int>
      |               std::tuple_element<0, std::pair<int, int> >::type {aka int}
In file included from /usr/include/c++/9/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:110,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/regex.h:1026:5: note: candidate: 'template<class _BiIter> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const std::__cxx11::sub_match<_BiIter>&)'
 1026 |     operator==(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/9/bits/regex.h:1026:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::__cxx11::sub_match<_BiIter>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:110,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/regex.h:1099:5: note: candidate: 'template<class _Bi_iter, class _Ch_traits, class _Ch_alloc> bool std::__cxx11::operator==(std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&, const std::__cxx11::sub_match<_BiIter>&)'
 1099 |     operator==(const __sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/9/bits/regex.h:1099:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:110,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/regex.h:1173:5: note: candidate: 'template<class _Bi_iter, class _Ch_traits, class _Ch_alloc> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&)'
 1173 |     operator==(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/9/bits/regex.h:1173:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::__cxx11::sub_match<_BiIter>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:110,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/regex.h:1247:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator==(const typename std::iterator_traits<_Iter>::value_type*, const std::__cxx11::sub_match<_BiIter>&)'
 1247 |     operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs,
      |     ^~~~~~~~
/usr/include/c++/9/bits/regex.h:1247:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   'std::pair<long long int, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:110,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/regex.h:1321:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type*)'
 1321 |     operator==(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/9/bits/regex.h:1321:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::__cxx11::sub_match<_BiIter>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:110,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/regex.h:1395:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator==(const typename std::iterator_traits<_Iter>::value_type&, const std::__cxx11::sub_match<_BiIter>&)'
 1395 |     operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs,
      |     ^~~~~~~~
/usr/include/c++/9/bits/regex.h:1395:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   'std::pair<long long int, int>' is not derived from 'const std::__cxx11::sub_match<_BiIter>'
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:110,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/regex.h:1473:5: note: candidate: 'template<class _Bi_iter> bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type&)'
 1473 |     operator==(const sub_match<_Bi_iter>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/9/bits/regex.h:1473:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::__cxx11::sub_match<_BiIter>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/regex:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:110,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/regex.h:1991:5: note: candidate: 'template<class _Bi_iter, class _Alloc> bool std::__cxx11::operator==(const std::__cxx11::match_results<_BiIter, _Alloc>&, const std::__cxx11::match_results<_BiIter, _Alloc>&)'
 1991 |     operator==(const match_results<_Bi_iter, _Alloc>& __m1,
      |     ^~~~~~~~
/usr/include/c++/9/bits/regex.h:1991:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::__cxx11::match_results<_BiIter, _Alloc>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:64,
                 from /usr/include/c++/9/bits/specfun.h:45,
                 from /usr/include/c++/9/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/stl_pair.h:448:5: note: candidate: 'template<class _T1, class _T2> constexpr bool std::operator==(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)'
  448 |     operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_pair.h:448:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::pair<_T1, _T2>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/bits/specfun.h:45,
                 from /usr/include/c++/9/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/stl_iterator.h:325:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)'
  325 |     operator==(const reverse_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:325:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::reverse_iterator<_Iterator>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/bits/specfun.h:45,
                 from /usr/include/c++/9/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/stl_iterator.h:363:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)'
  363 |     operator==(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:363:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::reverse_iterator<_Iterator>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/bits/specfun.h:45,
                 from /usr/include/c++/9/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/stl_iterator.h:1139:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)'
 1139 |     operator==(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:1139:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::move_iterator<_IteratorL>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/bits/specfun.h:45,
                 from /usr/include/c++/9/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41,
                 from crocodile.cpp:2:
/usr/include/c++/9/bits/stl_iterator.h:1145:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)'
 1145 |     operator==(const move_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:1145:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::move_iterator<_IteratorL>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/iosfwd:40,
                 from /usr/include/c++/9/ios:38,
                 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 crocodile.cpp:2:
/usr/include/c++/9/bits/postypes.h:222:5: note: candidate: 'template<class _StateT> bool std::operator==(const std::fpos<_StateT>&, const std::fpos<_StateT>&)'
  222 |     operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/9/bits/postypes.h:222:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::fpos<_StateT>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/string:41,
                 from /usr/include/c++/9/bits/locale_classes.h:40,
                 from /usr/include/c++/9/bits/ios_base.h:41,
                 from /usr/include/c++/9/ios:42,
                 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 crocodile.cpp:2:
/usr/include/c++/9/bits/allocator.h:168:5: note: candidate: 'template<class _T1, class _T2> bool std::operator==(const std::allocator<_CharT>&, const std::allocator<_T2>&)'
  168 |     operator==(const allocator<_T1>&, const allocator<_T2>&)
      |     ^~~~~~~~
/usr/include/c++/9/bits/allocator.h:168:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::allocator<_CharT>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/bits/basic_string.h:48,
                 from /usr/include/c++/9/string:55,
                 from /usr/include/c++/9/bits/locale_classes.h:40,
                 from /usr/include/c++/9/bits/ios_base.h:41,
                 from /usr/include/c++/9/ios:42,
                 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 crocodile.cpp:2:
/usr/include/c++/9/string_view:473:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator==(std::basic_string_view<_CharT, _Traits>, std::basic_string_view<_CharT, _Traits>)'
  473 |     operator==(basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/9/string_view:473:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'std::basic_string_view<_CharT, _Traits>' and 'int'
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/bits/basic_string.h:48,
                 from /usr/include/c++/9/string:55,
                 from /usr/include/c++/9/bits/locale_classes.h:40,
                 from /usr/include/c++/9/bits/ios_base.h:41,
                 from /usr/include/c++/9/ios:42,
                 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 crocodile.cpp:2:
/usr/include/c++/9/string_view:479:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator==(std::basic_string_view<_CharT, _Traits>, std::__detail::__idt<std::basic_string_view<_CharT, _Traits> >)'
  479 |     operator==(basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/9/string_view:479:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'std::basic_string_view<_CharT, _Traits>' and 'int'
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/bits/basic_string.h:48,
                 from /usr/include/c++/9/string:55,
                 from /usr/include/c++/9/bits/locale_classes.h:40,
                 from /usr/include/c++/9/bits/ios_base.h:41,
                 from /usr/include/c++/9/ios:42,
                 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 crocodile.cpp:2:
/usr/include/c++/9/string_view:485:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator==(std::__detail::__idt<std::basic_string_view<_CharT, _Traits> >, std::basic_string_view<_CharT, _Traits>)'
  485 |     operator==(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
      |     ^~~~~~~~
/usr/include/c++/9/string_view:485:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   'std::pair<long long int, int>' is not derived from 'std::basic_string_view<_CharT, _Traits>'
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/string:55,
                 from /usr/include/c++/9/bits/locale_classes.h:40,
                 from /usr/include/c++/9/bits/ios_base.h:41,
                 from /usr/include/c++/9/ios:42,
                 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 crocodile.cpp:2:
/usr/include/c++/9/bits/basic_string.h:6141:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&, const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 6141 |     operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/9/bits/basic_string.h:6141:5: note:   template argument deduction/substitution failed:
crocodile.cpp:63:21: note:   mismatched types 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>' and 'std::tuple_element<0, std::pair<int, int> >::type' {aka 'int'}
   63 |           if (to == is_blocked) {
      |                     ^~~~~~~~~~
In file included from /usr/include/c++/9/string:55,
                 from /usr/include/c++/9/bits/locale_classes.h:40,
                 from /usr/include/c++/9/bits/ios_base.h:41,
                 from /usr/include/c++/9/ios:42,
                 from /usr/include/c++/9/istream:38,
                 from /usr/include/c++/9/sstream: