제출 #1273659

#제출 시각아이디문제언어결과실행 시간메모리
1273659vtnooCyberland (APIO23_cyberland)C++20
컴파일 에러
0 ms0 KiB
#include "cyberland.h" #include <bits/stdc++.h> using namespace std; const int MAXN=100000; vector<vector<pair<int,double>>> adj; bool alc[MAXN], vis[MAXN]; void dfs(int u, const int& ban){ alc[u]=true; for(auto [v,t]:adj[u]){ if(v==ban)continue; if(!alc[v]){ dfs(v, ban); } } } 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) { memset(alc, 0, sizeof(alc)); memset(vis, 0, sizeof(vis)); adj.clear(); adj.resize(N); for(int i=0;i<M;i++){ adj[x[i]].push_back({y[i], c[i]}); adj[y[i]].push_back({x[i], c[i]}); } dfs(0,H); set<pair<double,int>> q; q.insert({0,0}); double op1=1e18, op2=1e18; while(!q.empty()){ auto [d,u]=*q.begin(); q.erase(q.begin()); vis[u]=true; if(u==H){ op1=d; break; } for(auto [v,t]:adj[u]){ if(!vis[v]){ q.insert({d+t,v}); } } } set<tuple<double,int,int>> q2; q2.insert({0,0,H}); vector<vector<double>> dist(N, vector<double>(K+1, 1e18)); dist[H][0]=0; double op2=1e18; while(!q2.empty()){ auto [d,k,u]=*q2.begin(); q2.erase(q2.begin()); if(arr[u]==0){ op2=min(op2, d); continue; } for(auto [v,t]:adj[u]){ if(alc[v]){ if(arr[v]==2&&k+1<=K){ if(dist[v][k+1]>(dist[u][k]+t)/2){ dist[v][k+1]=(dist[u][k]+t)/2; q2.insert({dist[v][k+1],k+1,v}); } } if(dist[v][k]>dist[u][k]+t){ dist[v][k]=dist[u][k]+t; q2.insert({dist[v][k],k,v}); } } } } if(op1==1e18)return -1; if(tar==-1){ return *min_element(dist[0].begin(), dist[0].end()); } return min(*min_element(dist[0].begin(), dist[0].end()), op2); }

컴파일 시 표준 에러 (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:51:12: error: redeclaration of 'double op2'
   51 |     double op2=1e18;
      |            ^~~
cyberland.cpp:32:22: note: 'double op2' previously declared here
   32 |     double op1=1e18, op2=1e18;
      |                      ^~~
cyberland.cpp:75:8: error: 'tar' was not declared in this scope; did you mean 'tan'?
   75 |     if(tar==-1){
      |        ^~~
      |        tan