#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<vector<int>> p;
vector<bool> j;
map<pair<int, int>, bool> b;
void dfs(int k){
j[k] = true;
for(int i = 0; i < p[k].size(); i++){
b[{p[k][i], k}] = true;
if(j[p[k][i]]) continue;
dfs(p[k][i]);
}
}
main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, m; cin >> n >> m;
int s, t; cin >> s >> t;
int u, v; cin >> u >> v;
j.resize(n+1);
vector<vector<pair<int, int>>> g(n+1);
for(int i = 0; i < m; i++){
int a, b; cin >> a >> b;
int c; cin >> c;
g[a].push_back({b, c});
g[b].push_back({a, c});
}
p.resize(n+1);
vector<bool> d(n+1);
vector<int> mn(n+1, 1e9);
multiset<pair<int, int>> q;
q.insert({0, s});
while(!q.empty()){
auto [time, k] = *q.begin();
q.erase(q.begin());
if(d[k] || k == t) continue;
d[k] = true;
for(auto [v, ti] : g[k]){
if(mn[v] == ti + time){
p[v].push_back(k);
}
if(d[v]) continue;
if(mn[v] > ti + time){
mn[v] = ti+time;
p[v] = {k};
q.insert({mn[v], v});
}
}
}
dfs(t);
q.clear();
q.insert({0, u});
vector<int> dis(n+1, 1e18);
d.clear();
d.resize(n+1, false);
while(q.size() > 0){
auto [time, k] = *q.begin();
q.erase(q.begin());
if(d[k]) continue;
d[k] = true;
for(auto [v, ti] : g[k]){
if(d[v]) continue;
if(b[{k, v}]){
ti = 0;
}
if(dis[v] > ti + time){
dis[v] = ti+time;
q.insert({dis[v], v});
}
}
}
q.clear();
q.insert({0, u});
vector<int> dis1(n+1, 1e18);
d.clear();
d.resize(n+1, false);
while(q.size() > 0){
auto [time, k] = *q.begin();
q.erase(q.begin());
if(d[k]) continue;
d[k] = true;
for(auto [v, ti] : g[k]){
if(d[v]) continue;
if(b[{v, k}]){
ti = 0;
}
if(dis1[v] > ti + time){
dis1[v] = ti+time;
q.insert({dis1[v], v});
}
}
}
cout << min(dis[v], dis1[v]) << "\n";
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
commuter_pass.cpp:17:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
17 | main(){
| ^~~~
# | 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... |