제출 #1315607

#제출 시각아이디문제언어결과실행 시간메모리
1315607jokukCommuter Pass (JOI18_commuter_pass)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; int main() { cin.tie(nullptr)->sync_with_stdio(false); int n,r,s,t,start,stop; cin>>n; cin>>r; cin>>s; cin>>t; cin>>start; cin>>stop; vector<vector<pair<int,long long int>>> adj(n); for(int i=0;i<r;i++) { int u,v; long long int w; cin>>u; cin>>v; cin>>w; u--; v--; adj[u].push_back({v,w}); adj[v].push_back({u,w}); } priority_queue<pair<long long int ,int>> q; long long int distx[n+1],disty[n+1]; for(int i=1;i<=n;i++) { distx[i]=LLONG_MAX; } distx[start]=disty[stop]=0; q.emplace(0,start); while(!q.empty()) { int a,b; a=q.top().first; b=q.top().second; q.pop(); a=-a; if(distx!=a) { continue; } for (auto [v,ww] : adj[b]) { if (distx[v]>ww+w) { q.emplace(-(distx[v]=ww+w),v); } } } q.emplace(0,stop); while(!q.empty()) { long long int a,b; a=q.top().first; b=q.top().second; q.pop(); a=-a; if(disty!=a) { continue; } for (auto [v, ww] : adj[b]) { if (disty[v]>ww+w) { q.emplace(-(disty[v]=ww+w),v); } } } priority_queue<tuple<long long int,long long int,long long int,long long int,int>> q1;// reminder dist, minx+miny, minx, miny, u pair<long long int,long long int> dist[n+1]; for (int i = 1; i <= n; i++) { dist[i] = make_pair(LLONG_MAX, LLONG_MAX); } dist[s].make_pair(0,distx[s]+disty[s]); q1.emplace(0,-(distx[s]+disty[s]),-distx[s],-disty[s],s); while(!q1.empty()) { auto [w, sum, minx, miny, u] = q1.top(); q1.pop(); w=-w; sum=-sum; minx=-minx; miny=-miny; if(make_pair(w,sum)!=dist[u]) { continue; } for (auto [v, ww] : adj[u]) { long long int nw = w+ww, nx=min(minx,distx[v]),ny=min(miny,disty[v]),ns=nx+ny; if (dist[v].first>nw) q1.emplace(-(dis[v].first = nw),-(dis[v].second=ns),-nx,-ny v); else if (dis[v].first == nw && dis[v].second > ns) q1.emplace(-(dist[v].first = nw), -(dist[v].second = ns), -nx, -ny, v); } } cout<<min(dist[t.second],distx[y])<<"\n"; }

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

commuter_pass.cpp: In function 'int main()':
commuter_pass.cpp:41:25: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   41 |                 if(distx!=a)
      |                    ~~~~~^~~
commuter_pass.cpp:47:38: error: 'w' was not declared in this scope; did you mean 'ww'?
   47 |                      if (distx[v]>ww+w)
      |                                      ^
      |                                      ww
commuter_pass.cpp:61:25: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   61 |                 if(disty!=a)
      |                    ~~~~~^~~
commuter_pass.cpp:67:38: error: 'w' was not declared in this scope; did you mean 'ww'?
   67 |                      if (disty[v]>ww+w)
      |                                      ^
      |                                      ww
commuter_pass.cpp:79:17: error: 'struct std::pair<long long int, long long int>' has no member named 'make_pair'
   79 |         dist[s].make_pair(0,distx[s]+disty[s]);
      |                 ^~~~~~~~~
commuter_pass.cpp:97:38: error: 'dis' was not declared in this scope; did you mean 'dist'?
   97 |                         q1.emplace(-(dis[v].first = nw),-(dis[v].second=ns),-nx,-ny v);
      |                                      ^~~
      |                                      dist
commuter_pass.cpp:97:84: error: expected ')' before 'v'
   97 |                         q1.emplace(-(dis[v].first = nw),-(dis[v].second=ns),-nx,-ny v);
      |                                   ~                                                ^~
      |                                                                                    )
commuter_pass.cpp:98:26: error: 'dis' was not declared in this scope; did you mean 'dist'?
   98 |                 else if (dis[v].first == nw && dis[v].second > ns)
      |                          ^~~
      |                          dist
commuter_pass.cpp:102:26: error: request for member 'second' in 't', which is of non-class type 'int'
  102 |         cout<<min(dist[t.second],distx[y])<<"\n";
      |                          ^~~~~~
commuter_pass.cpp:102:40: error: 'y' was not declared in this scope
  102 |         cout<<min(dist[t.second],distx[y])<<"\n";
      |                                        ^