Submission #997192

#TimeUsernameProblemLanguageResultExecution timeMemory
997192codefoxDreaming (IOI13_dreaming)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "dreaming.h" using namespace std; #define pii pair<int, int> vector<int> depth; vector<vector<pii>> graph; vector<int> vis; vector<int> vis2; vector<int> nums; void dfs(int i, int d) { if(vis[i]) return; vis[i] = 1; nums.push_back(i); depth[i] = d; for (pii ele:graph[i]) dfs(ele.second, ele.first+d); } int travelTime(int N, int M, int L, int A[], int B[], int T[]) { depth.assign(N, 1e9); graph.assign(N, vector<pii>()); vis.assign(N, 0); vis2.assign(N, 0); vector<int> ind(N, 0); for (int i = 0; i < M; i++) { graph[A[i]].push_back({B[i], T[i]}); graph[B[i]].push_back({A[i], T[i]}); ind[A[i]]++; ind[B[i]]++; } int sol = 0; vector<int> nodes; vector<int> md(N, 0); for (int i = 0; i < N; i++) { if (vis[i]) continue; nums.clear(); dfs(i, 0); int mx = 0; priority_queue<pii, vector<pii>, greater<pii>> pq; for (int ele:nums) if (ind[ele]==1) pq.push({0, ele}); while(pq.size()) { int j, d; tie(d, j) = pq.top(); pq.pop(); mx = max(mx, d); if (vis2[j]) continue; vis2[j] = 1; for (pii ele:graph[j]) { md[ele.first] = max(md[ele.first], ele.second+d); ind[ele.first]--; if (ind[ele.first]==1) pq.push({md[ele], ele.first}); } } int mmx = 0; int emx = 0; for (int ele:nums) { if (depth[ele]>mmx) { mmx = depth[ele]; emx = ele; } vis[ele] = 0; } nums.clear(); dfs(emx, 0); for (int ele:nums) { mmx = max(mmx, depth[ele]); } nodes.push_back(mx); sol = max(sol, mmx); } sort(nodes.begin(), nodes.end()); if (nodes.size()==2) sol = max(sol, nodes[0]+nodes[1]+L); else if (nodes.size()>2) sol = max(sol, max(nodes[nodes.size()-2]+nodes[nodes.size()-3]+2*L, nodes[nodes.size()-2]+nodes.back()+L)); return sol; }

Compilation message (stderr)

dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:60:39: error: no match for 'operator[]' (operand types are 'std::vector<int>' and 'std::pair<int, int>')
   60 |     if (ind[ele.first]==1) pq.push({md[ele], ele.first});
      |                                       ^
In file included from /usr/include/c++/10/vector:67,
                 from /usr/include/c++/10/queue:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from dreaming.cpp:1:
/usr/include/c++/10/bits/stl_vector.h:1043:7: note: candidate: 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::reference = int&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
 1043 |       operator[](size_type __n) _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_vector.h:1043:28: note:   no known conversion for argument 1 from 'std::pair<int, int>' to 'std::vector<int>::size_type' {aka 'long unsigned int'}
 1043 |       operator[](size_type __n) _GLIBCXX_NOEXCEPT
      |                  ~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_vector.h:1061:7: note: candidate: 'std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::const_reference = const int&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
 1061 |       operator[](size_type __n) const _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_vector.h:1061:28: note:   no known conversion for argument 1 from 'std::pair<int, int>' to 'std::vector<int>::size_type' {aka 'long unsigned int'}
 1061 |       operator[](size_type __n) const _GLIBCXX_NOEXCEPT
      |                  ~~~~~~~~~~^~~
dreaming.cpp:60:56: error: no matching function for call to 'std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int> >, std::greater<std::pair<int, int> > >::push(<brace-enclosed initializer list>)'
   60 |     if (ind[ele.first]==1) pq.push({md[ele], ele.first});
      |                                                        ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from dreaming.cpp:1:
/usr/include/c++/10/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::pair<int, int>; _Sequence = std::vector<std::pair<int, int> >; _Compare = std::greater<std::pair<int, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<int, int>]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::pair<int, int>&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::pair<int, int>; _Sequence = std::vector<std::pair<int, int> >; _Compare = std::greater<std::pair<int, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::pair<int, int>]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/10/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int> >, std::greater<std::pair<int, int> > >::value_type&&' {aka 'std::pair<int, int>&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~