#include <bits/stdc++.h>
#define pb push_back
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x) cerr << #x << " : " << x << '\n'
using namespace std;
typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;
const ll Mod = 1000000007LL;
const int N = 2e5 + 10;
const ll Inf = 2242545357980376863LL;
const ll Log = 30;
ll dis[2][N];
vector<pll> G[N];
set<pll> st;
void Dij(int sc, int idx){
memset(dis[idx], 31, sizeof dis[idx]);
dis[idx][sc] = 0;
st.insert({0, sc});
int fr;
while(!st.empty()){
fr = st.begin() -> S;
st.erase(st.begin());
for(auto ed : G[fr]){
if(dis[idx][ed.F] > dis[idx][fr] + ed.S){
st.erase({dis[idx][ed.F], ed.F});
dis[idx][ed.F] = dis[idx][fr] + ed.S;
st.insert({dis[idx][ed.F], ed.F});
}
}
}
}
ll dp[N][4], d[N];
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
ll n, m;
cin >> n >> m;
ll s, t, l1, l2;
cin >> s >> t >> l1 >> l2;
ll u, v, w;
for(int i = 0; i < m; i++){
cin >> u >> v >> w;
G[u].pb({v, w});
G[v].pb({u, w});
}
Dij(l1, 0);
Dij(l2, 1);
memset(dp, 31, sizeof dp);
memset(d, 31, sizeof d);
for(int i = 0; i < 4; i++) dp[s][i] = (i & 1 ? dis[0][s] : 0) + (i & 2 ? dis[1][s] : 0);
d[s] = 0;
st.insert({d[s], s});
int fr, adj;
while(!st.empty()){
fr = st.begin() -> S;
st.erase(st.begin());
for(auto e : G[fr]){
adj = e.F;
if(d[adj] > d[fr] + e.S){
st.erase({d[adj], adj});
d[adj] = d[fr] + e.S;
st.insert({d[adj], adj});
memset(dp[adj], 31, sizeof dp[adj]);
}
if(d[adj] == d[fr] + e.S){
for(int mk1 = 0; mk1 < 4; mk1 ++){
for(int mk2 = 0; mk2 < 4; mk2 ++){
if(mk1 & mk2) continue;
dp[adj][mk1 | mk2] = min(dp[adj][mk1 | mk2], dp[fr][mk1] + (mk2 & 1 ? dis[0][adj] : 0) + (mk2 & 2 ? dis[1][adj] : 0));
}
}
}
}
}
cout << min(dis[0][l2], dp[t][3]) << '\n';
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
527 ms |
33148 KB |
Output is correct |
2 |
Correct |
495 ms |
31900 KB |
Output is correct |
3 |
Correct |
439 ms |
31992 KB |
Output is correct |
4 |
Correct |
465 ms |
33272 KB |
Output is correct |
5 |
Correct |
406 ms |
31736 KB |
Output is correct |
6 |
Correct |
497 ms |
33272 KB |
Output is correct |
7 |
Correct |
401 ms |
31608 KB |
Output is correct |
8 |
Correct |
415 ms |
31944 KB |
Output is correct |
9 |
Correct |
418 ms |
32784 KB |
Output is correct |
10 |
Correct |
328 ms |
33016 KB |
Output is correct |
11 |
Correct |
147 ms |
23288 KB |
Output is correct |
12 |
Correct |
492 ms |
32504 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
498 ms |
32508 KB |
Output is correct |
2 |
Correct |
526 ms |
31608 KB |
Output is correct |
3 |
Correct |
491 ms |
31736 KB |
Output is correct |
4 |
Correct |
527 ms |
31608 KB |
Output is correct |
5 |
Correct |
521 ms |
31736 KB |
Output is correct |
6 |
Correct |
475 ms |
32120 KB |
Output is correct |
7 |
Correct |
494 ms |
31480 KB |
Output is correct |
8 |
Correct |
512 ms |
31784 KB |
Output is correct |
9 |
Correct |
491 ms |
31736 KB |
Output is correct |
10 |
Correct |
511 ms |
31608 KB |
Output is correct |
11 |
Correct |
180 ms |
23344 KB |
Output is correct |
12 |
Correct |
440 ms |
31968 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
23 ms |
17920 KB |
Output is correct |
2 |
Correct |
15 ms |
16000 KB |
Output is correct |
3 |
Correct |
14 ms |
16128 KB |
Output is correct |
4 |
Correct |
30 ms |
19328 KB |
Output is correct |
5 |
Correct |
22 ms |
17792 KB |
Output is correct |
6 |
Correct |
14 ms |
16128 KB |
Output is correct |
7 |
Correct |
14 ms |
16128 KB |
Output is correct |
8 |
Correct |
16 ms |
16256 KB |
Output is correct |
9 |
Correct |
14 ms |
16128 KB |
Output is correct |
10 |
Correct |
21 ms |
17664 KB |
Output is correct |
11 |
Correct |
13 ms |
16000 KB |
Output is correct |
12 |
Correct |
13 ms |
16000 KB |
Output is correct |
13 |
Correct |
14 ms |
16000 KB |
Output is correct |
14 |
Correct |
15 ms |
16128 KB |
Output is correct |
15 |
Correct |
14 ms |
16128 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
527 ms |
33148 KB |
Output is correct |
2 |
Correct |
495 ms |
31900 KB |
Output is correct |
3 |
Correct |
439 ms |
31992 KB |
Output is correct |
4 |
Correct |
465 ms |
33272 KB |
Output is correct |
5 |
Correct |
406 ms |
31736 KB |
Output is correct |
6 |
Correct |
497 ms |
33272 KB |
Output is correct |
7 |
Correct |
401 ms |
31608 KB |
Output is correct |
8 |
Correct |
415 ms |
31944 KB |
Output is correct |
9 |
Correct |
418 ms |
32784 KB |
Output is correct |
10 |
Correct |
328 ms |
33016 KB |
Output is correct |
11 |
Correct |
147 ms |
23288 KB |
Output is correct |
12 |
Correct |
492 ms |
32504 KB |
Output is correct |
13 |
Correct |
498 ms |
32508 KB |
Output is correct |
14 |
Correct |
526 ms |
31608 KB |
Output is correct |
15 |
Correct |
491 ms |
31736 KB |
Output is correct |
16 |
Correct |
527 ms |
31608 KB |
Output is correct |
17 |
Correct |
521 ms |
31736 KB |
Output is correct |
18 |
Correct |
475 ms |
32120 KB |
Output is correct |
19 |
Correct |
494 ms |
31480 KB |
Output is correct |
20 |
Correct |
512 ms |
31784 KB |
Output is correct |
21 |
Correct |
491 ms |
31736 KB |
Output is correct |
22 |
Correct |
511 ms |
31608 KB |
Output is correct |
23 |
Correct |
180 ms |
23344 KB |
Output is correct |
24 |
Correct |
440 ms |
31968 KB |
Output is correct |
25 |
Correct |
23 ms |
17920 KB |
Output is correct |
26 |
Correct |
15 ms |
16000 KB |
Output is correct |
27 |
Correct |
14 ms |
16128 KB |
Output is correct |
28 |
Correct |
30 ms |
19328 KB |
Output is correct |
29 |
Correct |
22 ms |
17792 KB |
Output is correct |
30 |
Correct |
14 ms |
16128 KB |
Output is correct |
31 |
Correct |
14 ms |
16128 KB |
Output is correct |
32 |
Correct |
16 ms |
16256 KB |
Output is correct |
33 |
Correct |
14 ms |
16128 KB |
Output is correct |
34 |
Correct |
21 ms |
17664 KB |
Output is correct |
35 |
Correct |
13 ms |
16000 KB |
Output is correct |
36 |
Correct |
13 ms |
16000 KB |
Output is correct |
37 |
Correct |
14 ms |
16000 KB |
Output is correct |
38 |
Correct |
15 ms |
16128 KB |
Output is correct |
39 |
Correct |
14 ms |
16128 KB |
Output is correct |
40 |
Correct |
602 ms |
35716 KB |
Output is correct |
41 |
Correct |
484 ms |
33016 KB |
Output is correct |
42 |
Correct |
496 ms |
32760 KB |
Output is correct |
43 |
Correct |
154 ms |
23288 KB |
Output is correct |
44 |
Correct |
180 ms |
23288 KB |
Output is correct |
45 |
Correct |
396 ms |
31480 KB |
Output is correct |
46 |
Correct |
419 ms |
31224 KB |
Output is correct |
47 |
Correct |
494 ms |
33144 KB |
Output is correct |
48 |
Correct |
163 ms |
22780 KB |
Output is correct |
49 |
Correct |
387 ms |
35300 KB |
Output is correct |
50 |
Correct |
376 ms |
31608 KB |
Output is correct |
51 |
Correct |
348 ms |
31480 KB |
Output is correct |