UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#184865#2058. 小游戏wuzr1001700ms5368kbC++112.0kb2023-09-14 23:52:362023-09-14 23:52:38

answer

#include<bits/stdc++.h>
using namespace std;
#define y1 y114514
#define ll long long
#define ld long double
#define ui unsigned int
#define ull unsigned long long
#define rep(i,a,b) for(int i=a,i##end=b;i<=i##end;++i)
#define per(i,a,b) for(int i=a,i##end=b;i>=i##end;--i)
#define endl '\n'
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define fi first
#define se second
#define vi vector<int>
#define pb push_back
#define eb emplace_back
#define vpii vector<pair<int,int>>
#define mk make_pair
#define MAX 0x7fffffff
#define popcount __builtin_popcountll
#define TIME 1e3*clock()/CLOCKS_PER_SEC
#define ckmax(x,y) x=x<y?y:x
#define ckmin(x,y) x=x<y?x:y
inline ll rd() {
	ll x = 0, flag = 1;
	char ch = getchar();
	while (ch < '0' || ch > '9') {
		if (ch == '-') flag = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		x = (x << 3) + (x << 1) + (ch ^ 48);
		ch = getchar();
	}
	return x * flag;
}
inline void wr(ll x) {
	if (x < 0) putchar('-'), x = -x;
	if (x > 9) wr(x / 10);
	putchar(x % 10 + '0');
}
bool Mbe;

const int N = 3e4 + 5;
int n, m, hp, a[N], vis[N];
vpii e[N];
struct node {
	int u, h, dis;
};
queue<node> q;

bool Med;
signed main() {
	fprintf(stderr, "%.3lf MB\n", (&Mbe - &Med) / 1048576.0);
	//ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

	cin >> n >> m >> hp;
	rep(i, 1, n) cin >> a[i];
	rep(i, 1, m) {
		int u, v, w;
		cin >> u >> v >> w;
		e[u].pb(mk(v, w));
		e[v].pb(mk(u, w));
	}
	q.push((node) {
		1, hp, 0
	});
	while (q.size()) {
		node x = q.front();
		q.pop();
		int u = x.u, h = x.h, dis = x.dis;
		for (auto y : e[u]) {
			int v = y.fi, w = y.se;
			if (h - w > 0) {
				w = min((h - w + a[v]), hp);
				if (w > vis[v]) {
					vis[v] = w;
					q.push((node) {
						v, w, dis + 1
					});
					if (v == n) {
						cout << dis + 1;
						return 0;
					}
				}
			}
		}
	}
	cout << -1;

	return cerr << "Time: " << TIME << " ms\n", 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 2024kb

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: 0ms
memory: 2048kb

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: 0ms
memory: 2024kb

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: 0ms
memory: 2024kb

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: 0ms
memory: 2048kb

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: 0ms
memory: 2080kb

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: 7ms
memory: 2176kb

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: 10
Accepted
time: 88ms
memory: 3844kb

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:

39

result:

ok single line: '39'

Test #9:

score: 10
Accepted
time: 879ms
memory: 5368kb

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:

1726

result:

ok single line: '1726'

Test #10:

score: 10
Accepted
time: 726ms
memory: 5280kb

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 ...

output:

1594

result:

ok single line: '1594'