社区讨论

求改!!!

灌水区参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lur2cav5
此快照首次捕获于
2024/04/08 22:43
2 年前
此快照最后确认于
2024/04/09 13:57
2 年前
查看原帖
[ABC348D] Medicines on Grid 求改!!!
代码如下:
C
#include <bits/stdc++.h>
#define int long long

using namespace std;
struct point{
    int x,y,step;
};
point q[10000005],s;
int front,rear;
int n,m,k;
int d[205][205];
string g[205];
int dx[10] = {-1,0,1,0};
int dy[10] = {0,1,0,-1};

signed main(){
    cin>>n>>m;
    for(int i = 1;i <= n;i++){
        cin>>g[i];
        g[i] = " "+g[i];
        for(int j = 1;j <= m;j++){
            if(g[i][j] == 'S'){
                s.x = i;
                s.y = j;
            }
        }
    }
    cin>>k;
    for(int i = 1;i <= k;i++){
        int a,b,c;
        cin>>a>>b>>c;
        d[a][b] = c;
    }
    front = 1,rear = 0;
    q[++rear] = s;
    while(front <= rear){
        point u = q[front++];
        point v;
        if(d[u.x][u.y] > u.step){
            v.step = d[u.x][u.y];
        }
        if(v.step == 0) continue;
        for(int i = 0;i < 4;i++){
            v.x = u.x+dx[i];
            v.y = u.y+dy[i];
            if(v.x < 1 || v.x > n || v.y < 1 || v.y > m) continue;
            if(g[v.x][v.y] == '#') continue;
            q[++rear] = v;
            if(g[v.x][v.y] == 'T'){
                cout<<"Yes"<<endl;
                return 0;
            }
        }
    }
    cout<<"No"<<endl;
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...