mirror of
https://git.sb/baoshuo/OI-codes.git
synced 2024-11-10 06:18:48 +00:00
P2895 [USACO08FEB]Meteor Shower S
R43077831
This commit is contained in:
parent
f8f79fc673
commit
5feb80b868
60
problem/P2895/P2895.cpp
Normal file
60
problem/P2895/P2895.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
const int dx[] = {0, 0, 0, -1, 1};
|
||||
const int dy[] = {0, 1, -1, 0, 0};
|
||||
|
||||
struct node {
|
||||
int x, y, t;
|
||||
|
||||
node() {
|
||||
x = y = t = 0;
|
||||
}
|
||||
node(int _x, int _y, int _t) {
|
||||
x = _x, y = _y, t = _t;
|
||||
}
|
||||
};
|
||||
|
||||
int n, x, y, t, m[305][305], f[305][305];
|
||||
|
||||
int main() {
|
||||
memset(m, 0x3f, sizeof(m));
|
||||
cin >> n;
|
||||
for (int i = 1; i <= n; i++) {
|
||||
cin >> x >> y >> t;
|
||||
m[x][y] = min(m[x][y], t);
|
||||
for (int j = 1; j <= 4; j++) {
|
||||
int xx = x + dx[j];
|
||||
int yy = y + dy[j];
|
||||
if (xx < 0 || yy < 0) continue;
|
||||
m[xx][yy] = min(m[xx][yy], t);
|
||||
}
|
||||
}
|
||||
queue<node> q;
|
||||
f[0][0] = 1;
|
||||
if (m[0][0] == 0x3f3f3f3f) {
|
||||
cout << 0 << endl;
|
||||
return 0;
|
||||
}
|
||||
q.push(node(0, 0, 0));
|
||||
while (!q.empty()) {
|
||||
int xx = q.front().x;
|
||||
int yy = q.front().y;
|
||||
int tt = q.front().t;
|
||||
q.pop();
|
||||
for (int i = 1; i <= 4; i++) {
|
||||
int u = xx + dx[i];
|
||||
int v = yy + dy[i];
|
||||
if (f[u][v] || u < 0 || v < 0 || tt + 1 >= m[u][v]) continue;
|
||||
if (m[u][v] == 0x3f3f3f3f) {
|
||||
cout << tt + 1 << endl;
|
||||
return 0;
|
||||
}
|
||||
q.push(node(u, v, tt + 1));
|
||||
f[u][v] = 1;
|
||||
}
|
||||
}
|
||||
cout << -1 << endl;
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user