文章
99
粉丝
120
获赞
8
访问
96.9k
#include<bits/stdc++.h> //美丽的万能头文件
using namespace std;
int n, ma[305][305], v[305][305], sx, sy, st, ans[305][305];//分别为陨石数量,陨石砸落地图,记录是否走过地图,陨石x,y坐标及砸落时间,每个点的最少时间图。
int dx[5] = { 0,0,0,1,-1 };
int dy[5] = { 0,1,-1,0,0 };//方便移动和处理陨石砸落
int ch(int a) {
if (a == -1) return 99999;
else return a;
}//判断路过该点时是否陨石已经砸落,如果是没有陨石,相当于n年后砸落
int main() {
scanf("%d", &n);
for (int i = 0; i < 305; i++) {
for (int j = 0; j < 305; j++) {
ma[i][j] = -1;
}
}//陨石初始化为-1
for (int i = 1; i <= n; i++) {
scanf("%d%d%d", &sx, &sy, &st);//输入陨石
for (int j = 0; j < 5; j++) {//上下左右中标记陨石
if (sx + dx[j] >= 0 && sy + dy[j] >= 0 && (ma[sx + dx[j]][sy + dy[j]] == -1 || ma[sx + dx[j]][sy + dy[j]] > st))//如果该标记x,y坐标大于0且该点没有被陨石砸落或已标记时间没有该时间早,标记陨石
ma[sx + dx[j]][sy + dy[j]] = st;
}
}
queue<int> q[2];//构造队列,存储将处理点x,y坐标
v[0][0] = 1;//初始点设为已走过
q[0].push(0); q[1].push(0);//初始点放入队列
while (!q[0].empty()) {/...
登录后发布评论
暂无评论,来抢沙发