#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
using I = int;
using Lli = long long int;
const I N = 100000;
const Lli MAX = 1e18;
vector<pair<I, I>> adjs[N];
priority_queue<pair<Lli, I>, vector<pair<Lli, I>>, greater<pair<Lli, I>>> que;
Lli diss1[N];
Lli diss2[N];
Lli diss3[N];
Lli mins1[N];
Lli mins2[N];
Lli tots[N];
void cmb(Lli& a, Lli b) {
a = min(a, b);
}
I main(void) {
cin.tie(0)->sync_with_stdio(0);
I n, m;
cin >> n >> m;
I s, t;
cin >> s >> t;
s--;
t--;
I u, v;
cin >> u >> v;
u--;
v--;
for (I i = 0; i < m; i++) {
I a, b, c;
cin >> a >> b >> c;
a--;
b--;
adjs[a].push_back({b, c});
adjs[b].push_back({a, c});
}
fill_n(diss1, n, MAX);
fill_n(diss2, n, MAX);
fill_n(diss3, n, MAX);
que.push({diss1[u] = 0, u});
while (!que.empty()) {
const auto [dis, a] = que.top();
que.pop();
if (dis != diss1[a])
continue;
for (const auto [b, c] : adjs[a])
if (dis + c < diss1[b])
que.push({diss1[b] = dis + c, b});
}
que.push({diss2[v] = 0, v});
while (!que.empty()) {
const auto [dis, a] = que.top();
que.pop();
if (dis != diss2[a])
continue;
for (const auto [b, c] : adjs[a])
if (dis + c < diss2[b])
que.push({diss2[b] = dis + c, b});
}
for (I i = 0; i < n; i++)
tots[i] = diss1[i] + diss2[i];
copy_n(diss1, n, mins1);
copy_n(diss2, n, mins2);
que.push({diss3[s] = 0, s});
while (!que.empty()) {
const auto [dis, a] = que.top();
que.pop();
if (dis != diss3[a])
continue;
for (const auto [b, c] : adjs[a]) {
if (dis + c < diss3[b]) {
tots[b] = min(tots[a], diss1[b] + diss2[b]);
cmb(tots[b], mins1[a] + diss2[b]);
cmb(tots[b], mins2[a] + diss1[b]);
mins1[b] = min(mins1[a], diss1[b]);
mins2[b] = min(mins2[a], diss2[b]);
que.push({diss3[b] = dis + c, b});
} else if (dis + c == diss3[b]) {
cmb(tots[b], tots[a]);
cmb(tots[b], mins1[a] + diss2[b]);
cmb(tots[b], mins2[a] + diss1[b]);
cmb(mins1[b], mins1[a]);
cmb(mins2[b], mins2[a]);
}
}
}
printf("%lli\n", min(tots[t], diss2[u]));
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
257 ms |
18612 KB |
Output is correct |
2 |
Correct |
213 ms |
18156 KB |
Output is correct |
3 |
Correct |
230 ms |
18104 KB |
Output is correct |
4 |
Correct |
213 ms |
18588 KB |
Output is correct |
5 |
Correct |
223 ms |
17840 KB |
Output is correct |
6 |
Correct |
223 ms |
18696 KB |
Output is correct |
7 |
Correct |
205 ms |
18048 KB |
Output is correct |
8 |
Correct |
241 ms |
18108 KB |
Output is correct |
9 |
Correct |
215 ms |
18812 KB |
Output is correct |
10 |
Correct |
194 ms |
18796 KB |
Output is correct |
11 |
Correct |
76 ms |
12488 KB |
Output is correct |
12 |
Correct |
246 ms |
18680 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
223 ms |
18372 KB |
Output is correct |
2 |
Correct |
251 ms |
18072 KB |
Output is correct |
3 |
Correct |
206 ms |
18040 KB |
Output is correct |
4 |
Correct |
226 ms |
18060 KB |
Output is correct |
5 |
Correct |
263 ms |
18068 KB |
Output is correct |
6 |
Correct |
200 ms |
18120 KB |
Output is correct |
7 |
Correct |
226 ms |
18048 KB |
Output is correct |
8 |
Correct |
239 ms |
18072 KB |
Output is correct |
9 |
Correct |
233 ms |
17988 KB |
Output is correct |
10 |
Correct |
237 ms |
17972 KB |
Output is correct |
11 |
Correct |
88 ms |
12488 KB |
Output is correct |
12 |
Correct |
200 ms |
18148 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
13 ms |
3796 KB |
Output is correct |
2 |
Correct |
2 ms |
2688 KB |
Output is correct |
3 |
Correct |
2 ms |
2644 KB |
Output is correct |
4 |
Correct |
17 ms |
4820 KB |
Output is correct |
5 |
Correct |
9 ms |
3732 KB |
Output is correct |
6 |
Correct |
2 ms |
2772 KB |
Output is correct |
7 |
Correct |
3 ms |
2772 KB |
Output is correct |
8 |
Correct |
3 ms |
2900 KB |
Output is correct |
9 |
Correct |
2 ms |
2772 KB |
Output is correct |
10 |
Correct |
7 ms |
3736 KB |
Output is correct |
11 |
Correct |
2 ms |
2684 KB |
Output is correct |
12 |
Correct |
2 ms |
2644 KB |
Output is correct |
13 |
Correct |
2 ms |
2644 KB |
Output is correct |
14 |
Correct |
2 ms |
2692 KB |
Output is correct |
15 |
Correct |
2 ms |
2772 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
257 ms |
18612 KB |
Output is correct |
2 |
Correct |
213 ms |
18156 KB |
Output is correct |
3 |
Correct |
230 ms |
18104 KB |
Output is correct |
4 |
Correct |
213 ms |
18588 KB |
Output is correct |
5 |
Correct |
223 ms |
17840 KB |
Output is correct |
6 |
Correct |
223 ms |
18696 KB |
Output is correct |
7 |
Correct |
205 ms |
18048 KB |
Output is correct |
8 |
Correct |
241 ms |
18108 KB |
Output is correct |
9 |
Correct |
215 ms |
18812 KB |
Output is correct |
10 |
Correct |
194 ms |
18796 KB |
Output is correct |
11 |
Correct |
76 ms |
12488 KB |
Output is correct |
12 |
Correct |
246 ms |
18680 KB |
Output is correct |
13 |
Correct |
223 ms |
18372 KB |
Output is correct |
14 |
Correct |
251 ms |
18072 KB |
Output is correct |
15 |
Correct |
206 ms |
18040 KB |
Output is correct |
16 |
Correct |
226 ms |
18060 KB |
Output is correct |
17 |
Correct |
263 ms |
18068 KB |
Output is correct |
18 |
Correct |
200 ms |
18120 KB |
Output is correct |
19 |
Correct |
226 ms |
18048 KB |
Output is correct |
20 |
Correct |
239 ms |
18072 KB |
Output is correct |
21 |
Correct |
233 ms |
17988 KB |
Output is correct |
22 |
Correct |
237 ms |
17972 KB |
Output is correct |
23 |
Correct |
88 ms |
12488 KB |
Output is correct |
24 |
Correct |
200 ms |
18148 KB |
Output is correct |
25 |
Correct |
13 ms |
3796 KB |
Output is correct |
26 |
Correct |
2 ms |
2688 KB |
Output is correct |
27 |
Correct |
2 ms |
2644 KB |
Output is correct |
28 |
Correct |
17 ms |
4820 KB |
Output is correct |
29 |
Correct |
9 ms |
3732 KB |
Output is correct |
30 |
Correct |
2 ms |
2772 KB |
Output is correct |
31 |
Correct |
3 ms |
2772 KB |
Output is correct |
32 |
Correct |
3 ms |
2900 KB |
Output is correct |
33 |
Correct |
2 ms |
2772 KB |
Output is correct |
34 |
Correct |
7 ms |
3736 KB |
Output is correct |
35 |
Correct |
2 ms |
2684 KB |
Output is correct |
36 |
Correct |
2 ms |
2644 KB |
Output is correct |
37 |
Correct |
2 ms |
2644 KB |
Output is correct |
38 |
Correct |
2 ms |
2692 KB |
Output is correct |
39 |
Correct |
2 ms |
2772 KB |
Output is correct |
40 |
Correct |
195 ms |
19048 KB |
Output is correct |
41 |
Correct |
217 ms |
18808 KB |
Output is correct |
42 |
Correct |
213 ms |
18864 KB |
Output is correct |
43 |
Correct |
88 ms |
12556 KB |
Output is correct |
44 |
Correct |
82 ms |
12592 KB |
Output is correct |
45 |
Correct |
192 ms |
17664 KB |
Output is correct |
46 |
Correct |
193 ms |
17396 KB |
Output is correct |
47 |
Correct |
207 ms |
18528 KB |
Output is correct |
48 |
Correct |
93 ms |
12024 KB |
Output is correct |
49 |
Correct |
207 ms |
18776 KB |
Output is correct |
50 |
Correct |
194 ms |
17804 KB |
Output is correct |
51 |
Correct |
184 ms |
17704 KB |
Output is correct |