제출 #833502

#제출 시각아이디문제언어결과실행 시간메모리
833502vjudge1Commuter Pass (JOI18_commuter_pass)C++17
15 / 100
490 ms21192 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair <ll, int> pii; #define For(i, n) for (int i = 0; i < n; i++) #define Each(x, v) for (auto x : v) #define pb push_back #define fi first #define se second const ll INF = LLONG_MAX; const int MAXN = 1e5; int N, M, S, T, U, V; vector <pii> adjList[MAXN]; set <pii> khusus; void StoT() { priority_queue < pii, vector <pii>, greater <pii> > pq; pq.push({0, S}); int fr[N]; ll distance[N]; For (i, N) fr[i] = -1, distance[i] = INF; distance[S] = 0; while (!pq.empty()) { ll dis = pq.top().fi; int x = pq.top().se; pq.pop(); Each (next, adjList[x]) { if (distance[next.fi] <= dis + next.se) continue; distance[next.fi] = dis + next.se; fr[next.fi] = x; pq.push({dis + next.se, next.fi}); } } int cur = T; while (cur != S) { if (fr[cur] == -1) break; khusus.insert({cur, fr[cur]}); cur = fr[cur]; } // cout << "khusus\n"; // Each (x, khusus) { // cout << x.fi << " " << x.se << endl; // } } void UtoV() { priority_queue < pii, vector <pii>, greater <pii> > pq; pq.push({0, U}); int fr[N]; ll distance[N]; For (i, N) distance[i] = INF; distance[U] = 0; while (!pq.empty()) { ll dis = pq.top().fi; int x = pq.top().se; pq.pop(); Each (next, adjList[x]) { if (khusus.count({x, next.fi}) || khusus.count({next.fi, x})) { if (distance[next.fi] <= dis) continue; distance[next.fi] = dis; pq.push({dis, next.fi}); } else { if (distance[next.fi] <= dis + next.se) continue; distance[next.fi] = dis + next.se; pq.push({dis + next.se, next.fi}); } } } // for (int i = 0; i < N; i++) { // cout << distance[i] << " "; // } cout << endl; cout << distance[V] << endl; } int main() { ios_base::sync_with_stdio(false); cin >> N >> M >> S >> T >> U >> V; S--, T--, U--, V--; For (i, M) { int A, B, C; cin >> A >> B >> C; A--, B--; adjList[A].pb({B, C}); adjList[B].pb({A, C}); } // dijkstra dari S sampai T StoT(); // dijkstra dari U ke V UtoV(); }

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

commuter_pass.cpp: In function 'void UtoV()':
commuter_pass.cpp:51:6: warning: unused variable 'fr' [-Wunused-variable]
   51 |  int fr[N];
      |      ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...