제출 #760468

#제출 시각아이디문제언어결과실행 시간메모리
760468salmon사이버랜드 (APIO23_cyberland)C++17
컴파일 에러
0 ms0 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) { //10^5 vector<pair<int,int>> adjlst[N]; long double d[N][min(K + 10,70 + 10)]; bool visited[N]; queue<pair<long double,int>,vector<pair<long double,int>>,greater<pair<long double,int>>> pq; queue<int> q; vector<int> voots; vector<int> sootv; for(int i = 0; i < M; i++){ adjlst[x[i]].push_back(make_pair(y[i],c[i])); adjlst[y[i]].push_back(make_pair(x[i],c[i])); } for(int i = 0; i < N; i++) visited[i] = false; for(int k = 0; k <= min(K,70); k++){ for(int i = 0; i < N; i++) d[i][k] = -1; } visited[0] = true; q.push(0); while(!q.empty()){ int i = q.front(); q.pop(); for(pair<int,int> ii : adjlst[i]){ int j = ii.first; if(!visited[j]){ visited[j] = true; if(arr[j] == 0) voots.push_back(j); if(arr[j] == 2) sootv.push_back(j); if(j != H) q.push(j); } } } voots.push_back(0); if(!visited[H]) return -1; for(int i : voots){ d[i][0] = 0; pq.push(make_pair(0,i)); } while(!pq.empty()){ long double de = pq.top().first; int i = pq.top().second; pq.pop(); if(d[i][0] == de && i != H){ for(pair<int,int> j : adjlst[i]){ if(d[j.first][0] == -1 || d[j.first][0] > de + j.second){ d[j.first][0] = de + j.second; pq.push(make_pair(de + j.second, j.first)); } } } } for(int k = 1; k <= min(K,70); k++){ for(int i = 0; i < N; i++) d[i][k] = d[i][k - 1]; for(int i : sootv){ for(pair<int,int> j : adjlst[i]){ if(d[j.first][k] == -1 || d[j.first][k] > d[i][k - 1]/2 + j.second){ d[j.first][k] = d[i][k - 1]/2 + j.second; pq.push(make_pair(d[i][k - 1]/2 + j.second, j.first)); } } } while(!pq.empty()){ long double de = pq.top().first; int i = pq.top().second; pq.pop(); if(d[i][k] == de && i != H){ for(pair<int,int> j : adjlst[i]){ if(d[j.first][k] == -1 || d[j.first][k] > de + j.second){ d[j.first][k] = de + j.second; pq.push(make_pair(de + j.second, j.first)); } } } } } return d[H][min(K,70)]; }

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

cyberland.cpp: In function 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:11:93: error: wrong number of template arguments (3, should be at least 1)
   11 |     queue<pair<long double,int>,vector<pair<long double,int>>,greater<pair<long double,int>>> pq;
      |                                                                                             ^
In file included from /usr/include/c++/10/queue:64,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:86,
                 from cyberland.cpp:2:
/usr/include/c++/10/bits/stl_queue.h:96:11: note: provided for 'template<class _Tp, class _Sequence> class std::queue'
   96 |     class queue
      |           ^~~~~
cyberland.cpp:51:12: error: request for member 'push' in 'pq', which is of non-class type 'int'
   51 |         pq.push(make_pair(0,i));
      |            ^~~~
cyberland.cpp:54:15: error: request for member 'empty' in 'pq', which is of non-class type 'int'
   54 |     while(!pq.empty()){
      |               ^~~~~
cyberland.cpp:55:29: error: request for member 'top' in 'pq', which is of non-class type 'int'
   55 |         long double de = pq.top().first;
      |                             ^~~
cyberland.cpp:56:20: error: request for member 'top' in 'pq', which is of non-class type 'int'
   56 |         int i = pq.top().second;
      |                    ^~~
cyberland.cpp:57:12: error: request for member 'pop' in 'pq', which is of non-class type 'int'
   57 |         pq.pop();
      |            ^~~
cyberland.cpp:63:24: error: request for member 'push' in 'pq', which is of non-class type 'int'
   63 |                     pq.push(make_pair(de + j.second, j.first));
      |                        ^~~~
cyberland.cpp:76:24: error: request for member 'push' in 'pq', which is of non-class type 'int'
   76 |                     pq.push(make_pair(d[i][k - 1]/2 + j.second, j.first));
      |                        ^~~~
cyberland.cpp:81:19: error: request for member 'empty' in 'pq', which is of non-class type 'int'
   81 |         while(!pq.empty()){
      |                   ^~~~~
cyberland.cpp:82:33: error: request for member 'top' in 'pq', which is of non-class type 'int'
   82 |             long double de = pq.top().first;
      |                                 ^~~
cyberland.cpp:83:24: error: request for member 'top' in 'pq', which is of non-class type 'int'
   83 |             int i = pq.top().second;
      |                        ^~~
cyberland.cpp:84:16: error: request for member 'pop' in 'pq', which is of non-class type 'int'
   84 |             pq.pop();
      |                ^~~
cyberland.cpp:90:28: error: request for member 'push' in 'pq', which is of non-class type 'int'
   90 |                         pq.push(make_pair(de + j.second, j.first));
      |                            ^~~~