#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
#define mp make_pair
#define pb push_back
#define Debug(...) fprintf(stderr, __VA_ARGS__)
typedef long long LL;
typedef long double LD;
typedef unsigned int uint;
typedef pair <int, int> pii;
typedef unsigned long long uLL;
template <typename T> inline void Read(T &x) {
char c = getchar();
bool f = false;
for (x = 0; !isdigit(c); c = getchar()) {
if (c == '-') {
f = true;
}
}
for (; isdigit(c); c = getchar()) {
x = x * 10 + c - '0';
}
if (f) {
x = -x;
}
}
template <typename T> inline bool CheckMax(T &a, const T &b) {
return a < b ? a = b, true : false;
}
template <typename T> inline bool CheckMin(T &a, const T &b) {
return a > b ? a = b, true : false;
}
const int N = 100005;
const LL inf = 1LL << 60;
LL ans, f[N], g[N], S[N], T[N], U[N], V[N];
priority_queue <pair <LL, int>> q;
int n, m, s, t, u, v, top, seq[N];
vector <pii> adj[N];
bool vis[N];
inline void Dijkstra(int s, LL *d) {
for (int i = 1; i <= n; ++i) {
vis[i] = false, d[i] = inf;
}
d[s] = 0, q.push(mp(0, s));
while (!q.empty()) {
int x = q.top().Y;
q.pop();
if (vis[x]) {
continue;
}
vis[x] = true;
for (auto e : adj[x]) {
if (CheckMin(d[e.X], d[x] + e.Y)) {
q.push(mp(-d[e.X], e.X));
}
}
}
}
int main() {
#ifdef wxh010910
freopen("d.in", "r", stdin);
#endif
Read(n), Read(m), Read(s), Read(t), Read(u), Read(v);
for (int i = 1, x, y, w; i <= m; ++i) {
Read(x), Read(y), Read(w);
adj[x].pb(mp(y, w)), adj[y].pb(mp(x, w));
}
Dijkstra(s, S), Dijkstra(t, T), Dijkstra(u, U), Dijkstra(v, V), ans = u[V];
for (int i = 1; i <= n; ++i) {
if (S[i] + T[i] == S[t]) {
seq[++top] = i, f[i] = U[i], g[i] = V[i];
}
}
sort(seq + 1, seq + top + 1, [&](const int &x, const int &y) {
return S[x] < S[y];
});
for (int i = 1; i <= top; ++i) {
int x = seq[i];
for (auto e : adj[x]) {
if (S[e.X] + e.Y == S[x]) {
CheckMin(f[x], f[e.X]), CheckMin(g[x], g[e.X]);
}
}
CheckMin(ans, f[x] + V[x]), CheckMin(ans, g[x] + U[x]);
}
printf("%lld\n", ans);
#ifdef wxh010910
Debug("My Time: %.3lfms\n", (double)clock() / CLOCKS_PER_SEC);
#endif
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
347 ms |
17572 KB |
Output is correct |
2 |
Correct |
363 ms |
22496 KB |
Output is correct |
3 |
Correct |
402 ms |
26544 KB |
Output is correct |
4 |
Correct |
337 ms |
29408 KB |
Output is correct |
5 |
Correct |
350 ms |
33348 KB |
Output is correct |
6 |
Correct |
341 ms |
36176 KB |
Output is correct |
7 |
Correct |
362 ms |
40984 KB |
Output is correct |
8 |
Correct |
386 ms |
44484 KB |
Output is correct |
9 |
Correct |
337 ms |
47036 KB |
Output is correct |
10 |
Correct |
309 ms |
51284 KB |
Output is correct |
11 |
Correct |
141 ms |
51284 KB |
Output is correct |
12 |
Correct |
367 ms |
57988 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
380 ms |
63440 KB |
Output is correct |
2 |
Correct |
378 ms |
66692 KB |
Output is correct |
3 |
Correct |
382 ms |
70140 KB |
Output is correct |
4 |
Correct |
392 ms |
73640 KB |
Output is correct |
5 |
Correct |
383 ms |
77172 KB |
Output is correct |
6 |
Correct |
399 ms |
81108 KB |
Output is correct |
7 |
Correct |
416 ms |
84512 KB |
Output is correct |
8 |
Correct |
392 ms |
87836 KB |
Output is correct |
9 |
Correct |
365 ms |
91156 KB |
Output is correct |
10 |
Correct |
373 ms |
94632 KB |
Output is correct |
11 |
Correct |
158 ms |
94632 KB |
Output is correct |
12 |
Correct |
364 ms |
100780 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
9 ms |
100780 KB |
Output is correct |
2 |
Correct |
4 ms |
100780 KB |
Output is correct |
3 |
Correct |
4 ms |
100780 KB |
Output is correct |
4 |
Correct |
14 ms |
100780 KB |
Output is correct |
5 |
Correct |
9 ms |
100780 KB |
Output is correct |
6 |
Correct |
5 ms |
100780 KB |
Output is correct |
7 |
Correct |
4 ms |
100780 KB |
Output is correct |
8 |
Correct |
5 ms |
100780 KB |
Output is correct |
9 |
Correct |
4 ms |
100780 KB |
Output is correct |
10 |
Correct |
10 ms |
100780 KB |
Output is correct |
11 |
Correct |
4 ms |
100780 KB |
Output is correct |
12 |
Correct |
4 ms |
100780 KB |
Output is correct |
13 |
Correct |
4 ms |
100780 KB |
Output is correct |
14 |
Correct |
4 ms |
100780 KB |
Output is correct |
15 |
Correct |
4 ms |
100780 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
347 ms |
17572 KB |
Output is correct |
2 |
Correct |
363 ms |
22496 KB |
Output is correct |
3 |
Correct |
402 ms |
26544 KB |
Output is correct |
4 |
Correct |
337 ms |
29408 KB |
Output is correct |
5 |
Correct |
350 ms |
33348 KB |
Output is correct |
6 |
Correct |
341 ms |
36176 KB |
Output is correct |
7 |
Correct |
362 ms |
40984 KB |
Output is correct |
8 |
Correct |
386 ms |
44484 KB |
Output is correct |
9 |
Correct |
337 ms |
47036 KB |
Output is correct |
10 |
Correct |
309 ms |
51284 KB |
Output is correct |
11 |
Correct |
141 ms |
51284 KB |
Output is correct |
12 |
Correct |
367 ms |
57988 KB |
Output is correct |
13 |
Correct |
380 ms |
63440 KB |
Output is correct |
14 |
Correct |
378 ms |
66692 KB |
Output is correct |
15 |
Correct |
382 ms |
70140 KB |
Output is correct |
16 |
Correct |
392 ms |
73640 KB |
Output is correct |
17 |
Correct |
383 ms |
77172 KB |
Output is correct |
18 |
Correct |
399 ms |
81108 KB |
Output is correct |
19 |
Correct |
416 ms |
84512 KB |
Output is correct |
20 |
Correct |
392 ms |
87836 KB |
Output is correct |
21 |
Correct |
365 ms |
91156 KB |
Output is correct |
22 |
Correct |
373 ms |
94632 KB |
Output is correct |
23 |
Correct |
158 ms |
94632 KB |
Output is correct |
24 |
Correct |
364 ms |
100780 KB |
Output is correct |
25 |
Correct |
9 ms |
100780 KB |
Output is correct |
26 |
Correct |
4 ms |
100780 KB |
Output is correct |
27 |
Correct |
4 ms |
100780 KB |
Output is correct |
28 |
Correct |
14 ms |
100780 KB |
Output is correct |
29 |
Correct |
9 ms |
100780 KB |
Output is correct |
30 |
Correct |
5 ms |
100780 KB |
Output is correct |
31 |
Correct |
4 ms |
100780 KB |
Output is correct |
32 |
Correct |
5 ms |
100780 KB |
Output is correct |
33 |
Correct |
4 ms |
100780 KB |
Output is correct |
34 |
Correct |
10 ms |
100780 KB |
Output is correct |
35 |
Correct |
4 ms |
100780 KB |
Output is correct |
36 |
Correct |
4 ms |
100780 KB |
Output is correct |
37 |
Correct |
4 ms |
100780 KB |
Output is correct |
38 |
Correct |
4 ms |
100780 KB |
Output is correct |
39 |
Correct |
4 ms |
100780 KB |
Output is correct |
40 |
Correct |
319 ms |
105492 KB |
Output is correct |
41 |
Correct |
358 ms |
109432 KB |
Output is correct |
42 |
Correct |
355 ms |
113884 KB |
Output is correct |
43 |
Correct |
114 ms |
113884 KB |
Output is correct |
44 |
Correct |
111 ms |
115752 KB |
Output is correct |
45 |
Correct |
299 ms |
123024 KB |
Output is correct |
46 |
Correct |
298 ms |
126072 KB |
Output is correct |
47 |
Correct |
327 ms |
129304 KB |
Output is correct |
48 |
Correct |
185 ms |
129304 KB |
Output is correct |
49 |
Correct |
308 ms |
133988 KB |
Output is correct |
50 |
Correct |
365 ms |
138808 KB |
Output is correct |
51 |
Correct |
323 ms |
142152 KB |
Output is correct |