#include<bits/stdc++.h>
const int MaxN = 1e5 + 10;
const long long Inf = 1e18;
struct Data{
long long vertex,w;
bool operator > (const Data &other) const{
return (w > other.w);
}
};
std::vector<std::pair<int,int>> adj[MaxN + 1];
int n,m;
long long f[4][MaxN + 1],s,t,s1,t1,ans = Inf;
std::pair<long long,long long> minPath[MaxN + 1],minPath1[MaxN + 1];
bool vis[MaxN + 1];
void readData(){
std::cin >> n >> m >> s >> t >> s1 >> t1;
for(int i = 1;i <= m;++i){
int u,v,w;
std::cin >> u >> v >> w;
adj[u].emplace_back(v,w);
adj[v].emplace_back(u,w);
}
}
void disjktra(int source,long long dist[]){
std::fill(dist + 1,dist + n + 1,Inf);
std::priority_queue<Data,std::vector<Data>,std::greater<Data>> pq;
pq.push({source,0});
dist[source] = 0;
while(!pq.empty()){
Data t = pq.top();
pq.pop();
if(t.w > dist[t.vertex]){
continue;
}
for(std::pair<int,int> v : adj[t.vertex]){
if(t.w + v.second < dist[v.first]){
dist[v.first] = t.w + v.second;
pq.push({v.first,dist[v.first]});
}
}
}
}
void disjktra1(){
std::fill(f[3] + 1,f[3] + n + 1,Inf);
for(int i = 1;i <= n;++i){
minPath[i] = {f[1][i],f[2][i]};
minPath1[i] = {f[2][i],f[1][i]};
}
std::priority_queue<Data,std::vector<Data>,std::greater<Data>> pq;
pq.push({s,0});
f[3][s] = 0;
while(!pq.empty()){
Data t = pq.top();
pq.pop();
if(t.w > f[3][t.vertex]){
continue;
}
for(std::pair<int,int> v : adj[t.vertex]){
if(t.w + v.second < f[3][v.first]){
f[3][v.first] = t.w + v.second;
pq.push({v.first,f[3][v.first]});
std::pair<long long,long long> first = {std::min(f[1][v.first],minPath[t.vertex].first),std::min(f[2][v.first],minPath[t.vertex].second)};
std::pair<long long,long long> second = {std::min(f[2][v.first],minPath1[t.vertex].first),std::min(f[1][v.first],minPath1[t.vertex].second)};
minPath[v.first] = first;
minPath1[v.first] = second;
// assert(std::min(first.first,first.second) > 0);
// assert(std::min(second.first,second.second) > 0);
}
if(t.w + v.second == f[3][v.first]){
std::pair<long long,long long> first = {std::min(f[1][v.first],minPath[t.vertex].first),std::min(f[2][v.first],minPath[t.vertex].second)};
std::pair<long long,long long> second = {std::min(f[2][v.first],minPath1[t.vertex].first),std::min(f[1][v.first],minPath1[t.vertex].second)};
minPath[v.first] = std::min(minPath[v.first],first);
minPath1[v.first] = std::min(minPath1[v.first],second);
}
}
}
}
void dfs(int u = t){
vis[u] = true;
ans = std::min(ans,minPath[u].first + minPath[u].second);
ans = std::min(ans,minPath1[u].first + minPath1[u].second);
for(std::pair<int,int> v : adj[u]){
if(f[3][v.first] + v.second == f[3][u] && !vis[v.first]){
dfs(v.first);
}
}
}
int main(){
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);std::cout.tie(nullptr);
readData();
disjktra(s1,f[1]);
disjktra(t1,f[2]);
disjktra1();
dfs();
ans = std::min(ans,f[2][s1]);
std::cout << ans;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
179 ms |
22212 KB |
Output is correct |
2 |
Correct |
166 ms |
20788 KB |
Output is correct |
3 |
Correct |
199 ms |
22176 KB |
Output is correct |
4 |
Correct |
131 ms |
21144 KB |
Output is correct |
5 |
Correct |
149 ms |
20404 KB |
Output is correct |
6 |
Correct |
188 ms |
22304 KB |
Output is correct |
7 |
Correct |
160 ms |
20588 KB |
Output is correct |
8 |
Correct |
142 ms |
20536 KB |
Output is correct |
9 |
Correct |
138 ms |
21328 KB |
Output is correct |
10 |
Correct |
144 ms |
21184 KB |
Output is correct |
11 |
Correct |
63 ms |
16016 KB |
Output is correct |
12 |
Correct |
148 ms |
21248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
175 ms |
20928 KB |
Output is correct |
2 |
Correct |
243 ms |
20720 KB |
Output is correct |
3 |
Correct |
158 ms |
20612 KB |
Output is correct |
4 |
Correct |
172 ms |
20492 KB |
Output is correct |
5 |
Correct |
195 ms |
20756 KB |
Output is correct |
6 |
Correct |
164 ms |
21960 KB |
Output is correct |
7 |
Correct |
158 ms |
21948 KB |
Output is correct |
8 |
Correct |
168 ms |
20644 KB |
Output is correct |
9 |
Correct |
187 ms |
20588 KB |
Output is correct |
10 |
Correct |
163 ms |
20612 KB |
Output is correct |
11 |
Correct |
55 ms |
17240 KB |
Output is correct |
12 |
Correct |
154 ms |
22028 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
10072 KB |
Output is correct |
2 |
Correct |
2 ms |
8796 KB |
Output is correct |
3 |
Correct |
2 ms |
8796 KB |
Output is correct |
4 |
Correct |
11 ms |
11100 KB |
Output is correct |
5 |
Correct |
7 ms |
10076 KB |
Output is correct |
6 |
Correct |
2 ms |
9028 KB |
Output is correct |
7 |
Correct |
2 ms |
9012 KB |
Output is correct |
8 |
Correct |
3 ms |
9052 KB |
Output is correct |
9 |
Correct |
2 ms |
9052 KB |
Output is correct |
10 |
Correct |
7 ms |
10076 KB |
Output is correct |
11 |
Correct |
2 ms |
8804 KB |
Output is correct |
12 |
Correct |
2 ms |
8796 KB |
Output is correct |
13 |
Correct |
2 ms |
8796 KB |
Output is correct |
14 |
Correct |
2 ms |
9052 KB |
Output is correct |
15 |
Correct |
2 ms |
9052 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
179 ms |
22212 KB |
Output is correct |
2 |
Correct |
166 ms |
20788 KB |
Output is correct |
3 |
Correct |
199 ms |
22176 KB |
Output is correct |
4 |
Correct |
131 ms |
21144 KB |
Output is correct |
5 |
Correct |
149 ms |
20404 KB |
Output is correct |
6 |
Correct |
188 ms |
22304 KB |
Output is correct |
7 |
Correct |
160 ms |
20588 KB |
Output is correct |
8 |
Correct |
142 ms |
20536 KB |
Output is correct |
9 |
Correct |
138 ms |
21328 KB |
Output is correct |
10 |
Correct |
144 ms |
21184 KB |
Output is correct |
11 |
Correct |
63 ms |
16016 KB |
Output is correct |
12 |
Correct |
148 ms |
21248 KB |
Output is correct |
13 |
Correct |
175 ms |
20928 KB |
Output is correct |
14 |
Correct |
243 ms |
20720 KB |
Output is correct |
15 |
Correct |
158 ms |
20612 KB |
Output is correct |
16 |
Correct |
172 ms |
20492 KB |
Output is correct |
17 |
Correct |
195 ms |
20756 KB |
Output is correct |
18 |
Correct |
164 ms |
21960 KB |
Output is correct |
19 |
Correct |
158 ms |
21948 KB |
Output is correct |
20 |
Correct |
168 ms |
20644 KB |
Output is correct |
21 |
Correct |
187 ms |
20588 KB |
Output is correct |
22 |
Correct |
163 ms |
20612 KB |
Output is correct |
23 |
Correct |
55 ms |
17240 KB |
Output is correct |
24 |
Correct |
154 ms |
22028 KB |
Output is correct |
25 |
Correct |
7 ms |
10072 KB |
Output is correct |
26 |
Correct |
2 ms |
8796 KB |
Output is correct |
27 |
Correct |
2 ms |
8796 KB |
Output is correct |
28 |
Correct |
11 ms |
11100 KB |
Output is correct |
29 |
Correct |
7 ms |
10076 KB |
Output is correct |
30 |
Correct |
2 ms |
9028 KB |
Output is correct |
31 |
Correct |
2 ms |
9012 KB |
Output is correct |
32 |
Correct |
3 ms |
9052 KB |
Output is correct |
33 |
Correct |
2 ms |
9052 KB |
Output is correct |
34 |
Correct |
7 ms |
10076 KB |
Output is correct |
35 |
Correct |
2 ms |
8804 KB |
Output is correct |
36 |
Correct |
2 ms |
8796 KB |
Output is correct |
37 |
Correct |
2 ms |
8796 KB |
Output is correct |
38 |
Correct |
2 ms |
9052 KB |
Output is correct |
39 |
Correct |
2 ms |
9052 KB |
Output is correct |
40 |
Correct |
153 ms |
22496 KB |
Output is correct |
41 |
Correct |
166 ms |
21372 KB |
Output is correct |
42 |
Correct |
167 ms |
21308 KB |
Output is correct |
43 |
Correct |
65 ms |
16616 KB |
Output is correct |
44 |
Correct |
62 ms |
16724 KB |
Output is correct |
45 |
Correct |
175 ms |
20084 KB |
Output is correct |
46 |
Correct |
146 ms |
20000 KB |
Output is correct |
47 |
Correct |
154 ms |
20984 KB |
Output is correct |
48 |
Correct |
68 ms |
14676 KB |
Output is correct |
49 |
Correct |
130 ms |
22244 KB |
Output is correct |
50 |
Correct |
147 ms |
20132 KB |
Output is correct |
51 |
Correct |
172 ms |
20032 KB |
Output is correct |