이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const long long inf = 0x3f3f3f3f3f3f3f3f;
const int N = (int) 1e5 + 7;
int n, m, s, t, x, y, u, v, w;
vector<pair<int, long long>> adj[N];
long long dist_s[N], dist_t[N], dist[N];
bool visited[N];
void dijkstra(int s, long long dist[]){
memset(visited, false, sizeof visited);
for(int i = 1; i <= n; i++){
dist[i] = inf;
}
priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> pq;
dist[s] = 0;
pq.push({0, s});
while(!pq.empty()){
int u = pq.top().second;
pq.pop();
if(visited[u]) continue;
visited[u] = true;
for(int i = 0; i < (int) adj[u].size(); i++){
int v = adj[u][i].first;
long long w = adj[u][i].second;
if(dist[v] > dist[u] + w){
dist[v] = dist[u] + w;
pq.push({dist[v], v});
}
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n >> m >> s >> t >> x >> y;
for(int i = 1; i <= m; i++){
cin >> u >> v >> w;
adj[u].push_back({v, w});
adj[v].push_back({u, w});
}
dijkstra(s, dist_s);
dijkstra(t, dist_t);
memset(dist, 0x3f, sizeof dist);
memset(visited, false, sizeof visited);
priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> pq;
pq.push({0, x});
dist[x] = 0;
while(!pq.empty()){
int u = pq.top().second;
pq.pop();
if(visited[u]) continue;
visited[u] = true;
for(int i = 0; i < (int) adj[u].size(); i++){
int v = adj[u][i].first;
long long w = adj[u][i].second;
if(dist_s[u] + w + dist_t[v] == dist_s[t] || dist_s[v] + w + dist_t[u] == dist_s[t]){
if(dist[v] > dist[u]){
dist[v] = dist[u];
pq.push({dist[v], v});
}
}
else{
if(dist[v] > dist[u] + w){
dist[v] = dist[u] + w;
pq.push({dist[v], v});
}
}
}
}
cout << dist[y] << "\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |