제출 #760421

#제출 시각아이디문제언어결과실행 시간메모리
760421salmon사이버랜드 (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][K + 10]; bool visited[N]; priority_queue<pair<long double,int>,vector<pair<long double,int>>,greater<pair<long double,int>>> pq; queue<int> q; vector<int> voots; 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 <= K; 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(int j : adjlst[i]){ if(!visited[j]){ visited[j] = true; if(arr[j] == 0) voots.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 d = pq.top().first; int i = pq.top().second; if(d[i][0] == d && i != H){ for(pair<int,int> j : adjlst[i]){ if(d[j.first][0] == -1 || d[j.first][0] > d + j.second){ d[j.first][0] = d + j.second; pq.push(make_pair(d + j.second, j.first)); } } } } return d[H][0]; }

컴파일 시 표준 에러 (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:33:29: error: cannot convert 'std::pair<int, int>' to 'int' in initialization
   33 |         for(int j : adjlst[i]){
      |                             ^
cyberland.cpp:37:37: error: expected ';' before ')' token
   37 |                 if(j != H) q.push(j));
      |                                     ^
      |                                     ;
cyberland.cpp:55:13: error: invalid types 'long double[int]' for array subscript
   55 |         if(d[i][0] == d && i != H){
      |             ^
cyberland.cpp:57:21: error: invalid types 'long double[int]' for array subscript
   57 |                 if(d[j.first][0] == -1 || d[j.first][0] > d + j.second){
      |                     ^
cyberland.cpp:57:44: error: invalid types 'long double[int]' for array subscript
   57 |                 if(d[j.first][0] == -1 || d[j.first][0] > d + j.second){
      |                                            ^
cyberland.cpp:58:22: error: invalid types 'long double[int]' for array subscript
   58 |                     d[j.first][0] = d + j.second;
      |                      ^