Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
1229 ydks 鸣人与佐助 C++ 通过 2 MS 736 KB 1150 2022-05-29 14:39:38

Tests(20/20):


#include<bits/stdc++.h> using namespace std; const int N = 205; char a[N][N]; struct zb{ int x, y, ckl; int time; }; int m, n; int jl[N][N][15], xz[4] = {-1, 1, 0, 0}, yz[4] = {0, 0, -1, 1}; int main(){ int t, cx, cy; cin >> n >> m >> t; for(int i = 1;i <= n;i ++){ for(int j = 1;j <= m;j ++){ cin >> a[i][j]; if(a[i][j] == '@'){ cx = i; cy = j; } } } queue<zb> q; q.push({cx, cy, t, 0}); while(!q.empty()){ int x = q.front().x, y = q.front().y, tmp = q.front().ckl, ti = q.front().time; q.pop(); if(a[x][y] == '+'){ cout << ti; return 0; } for(int i = 0;i < 4;i ++){ int dx = xz[i] + x, dy = yz[i] + y; if(dx >= 1 && dx <= n && dy >= 1 && dy <= m && !jl[dx][dy][tmp]){ if(!tmp && a[dx][dy] == '#'){ continue; } if(a[dx][dy] == '#' && tmp){ q.push({dx, dy, tmp - 1, ti + 1}); jl[dx][dy][tmp - 1] = 1; } else { q.push({dx, dy, tmp, ti + 1}); jl[dx][dy][tmp] = 1; } } } } cout << -1; }


测评信息: