ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#213455 | #2058. 小游戏 | one_zero_four_zero | 70 | 406ms | 84256kb | C++11 | 1.5kb | 2024-11-11 23:12:01 | 2024-11-11 23:12:04 |
answer
#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
struct edge{
int v, w;
};
int N, M, MAXN, ans = 0x3f3f3f3f;
int dis[2000006];
bool vis[2000006];
vector<edge> tmp[100005];
vector<int> E[2000006];
int val[100005];
int u[200005], v[200005], w[200005];
void dijkstra(int st){
memset(dis, 0x3f, sizeof(dis));
memset(vis, 0, sizeof(vis));
dis[st] = 0;
priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > q;
q.push({0, st});
while (!q.empty()){
int u = q.top().second;
q.pop();
if (vis[u]) continue;
// cout << u << " " << dis[u] << ";;\n";
vis[u] = 1;
for (auto && v : E[u]){
if (dis[v] <= dis[u] + 1) continue;
dis[v] = dis[u] + 1;
q.push({dis[v], v});
}
}
}
int main(){
#ifndef ONLINE_JUDGE
freopen("../data.in", "r", stdin);
freopen("../data.out", "w", stdout);
#endif
scanf("%d %d %d", &N, &M, &MAXN);
for (int i = 1; i <= N; i ++){
scanf("%d", &val[i]);
}
for (int i = 1; i <= M; i ++){
scanf("%d %d %d", &u[i], &v[i], &w[i]);
tmp[u[i]].push_back({v[i], w[i]});
tmp[v[i]].push_back({u[i], w[i]});
}
for (int k = 1; k <= MAXN; k ++){
for (int i = 1; i <= N; i ++){
for (auto && v : tmp[i]){
if (k - v.w <= 0) continue;
E[k * N + i].push_back(min(MAXN, k - v.w + val[v.v]) * N + v.v);
}
}
}
dijkstra(MAXN * N + 1);
for (int k = 1; k <= MAXN; k ++){
ans = min(ans, dis[k * N + N]);
}
if (ans == 0x3f3f3f3f) ans = -1;
printf("%d\n", ans);
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 12ms
memory: 60244kb
input:
5 10 10 3 3 0 1 1 4 4 1 4 3 1 3 2 6 3 4 10 5 1 5 1 3 9 2 5 19 2 5 1 5 2 10 2 1 4
output:
1
result:
ok single line: '1'
Test #2:
score: 10
Accepted
time: 7ms
memory: 60244kb
input:
5 10 10 1 0 1 3 0 5 2 1 5 2 8 4 3 18 1 3 10 5 3 5 2 3 8 5 3 15 3 1 11 4 5 9 2 4 1
output:
-1
result:
ok single line: '-1'
Test #3:
score: 10
Accepted
time: 13ms
memory: 60248kb
input:
5 10 10 0 3 1 1 1 1 3 12 5 4 8 1 1 6 5 2 1 2 5 3 1 4 2 1 4 4 4 5 5 4 2 9 3 4 2
output:
2
result:
ok single line: '2'
Test #4:
score: 10
Accepted
time: 12ms
memory: 60252kb
input:
20 50 20 4 0 3 4 3 0 5 2 5 0 5 2 5 2 0 6 2 3 4 2 16 5 18 9 1 24 14 16 27 5 16 32 14 7 31 13 20 23 6 ...
output:
10
result:
ok single line: '10'
Test #5:
score: 10
Accepted
time: 7ms
memory: 60328kb
input:
100 500 20 2 5 5 3 0 1 1 3 4 2 5 5 5 4 5 3 1 0 2 5 5 5 2 2 1 4 0 1 6 0 1 5 2 4 5 4 4 6 3 0 0 1 5 1 3...
output:
11
result:
ok single line: '11'
Test #6:
score: 10
Accepted
time: 72ms
memory: 67100kb
input:
500 1000 500 143 113 118 133 51 100 155 76 81 43 8 91 85 65 61 69 1 30 135 125 0 43 126 20 40 52 165...
output:
11
result:
ok single line: '11'
Test #7:
score: 10
Accepted
time: 283ms
memory: 84256kb
input:
1000 5000 1000 94 154 195 48 124 134 103 168 192 122 101 8 5 197 62 123 36 129 90 48 24 43 104 7 108...
output:
32
result:
ok single line: '32'
Test #8:
score: 0
Runtime Error
input:
10000 50000 10000 30 96 44 6 84 58 47 34 35 80 49 45 47 76 93 16 2 83 23 79 81 12 66 81 96 3 37 4 69...
output:
result:
Test #9:
score: 0
Runtime Error
input:
30000 100000 20000 21 95 28 93 22 5 16 70 27 36 38 21 7 11 8 46 88 19 98 80 70 53 73 83 79 93 55 75 ...
output:
result:
Test #10:
score: 0
Runtime Error
input:
30000 100000 20000 94 72 1 42 14 15 63 14 26 25 44 9 1 71 75 85 98 80 87 49 10 47 73 16 98 13 62 72 ...