제출 #1315611

#제출 시각아이디문제언어결과실행 시간메모리
1315611jokukCommuter Pass (JOI18_commuter_pass)C++17
컴파일 에러
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()) { auto [w, u] = q.top(); q.pop(); w=-w; if(distx[u]!=w) { continue; } for (auto [v,ww] : adj[u]) { if (distx[v]>ww+w) { q.emplace(-(distx[v]=ww+w),v); } } } q.emplace(0,stop); while(!q.empty()) { auto [w, u] = q.top(); q.pop(); w=-w; if(disty[u]!=w) { continue; } for (auto [v, ww] : adj[u]) { 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(-(dist[v].first = nw),-(dist[v].second=ns),-nx,-ny,v); else if (dist[v].first == nw && dist[v].second > ns) q1.emplace(-(dist[v].first = nw), -(dist[v].second = ns), -nx, -ny, v); } } cout<<min(dist[t.second],distx[stop])<<"\n"; }

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

commuter_pass.cpp: In function 'int main()':
commuter_pass.cpp:75:17: error: 'struct std::pair<long long int, long long int>' has no member named 'make_pair'
   75 |         dist[s].make_pair(0,distx[s]+disty[s]);
      |                 ^~~~~~~~~
commuter_pass.cpp:98:26: error: request for member 'second' in 't', which is of non-class type 'int'
   98 |         cout<<min(dist[t.second],distx[stop])<<"\n";
      |                          ^~~~~~