| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:过了各种样例还WA的过来看看In Reply To:过了各种样例还WA的过来看看 Posted by:CatG at 2015-06-08 23:10:54 > 千万不要在使用了队列pop的时候还引用呀!!我就是这样wa了无数遍。
> 附AC码:
> #include <iostream>
> #include <cstdio>
> #include <queue>
> #include <cstring>
> using namespace std;
> const int MAXN = 50;
>
> char mp[MAXN][MAXN][MAXN];
> bool vis[MAXN][MAXN][MAXN];
> int l, r, c;
> int dz[]={-1,1,0,0,0,0};
> int dx[]={0,0,0,0,-1,1};
> int dy[]={0,0,-1,1,0,0};
>
> struct Node{
> int z, x, y, dis;
> Node(int a, int b, int c, int d): z(a), x(b), y(c), dis(d){}
> };
>
> int main() {
> ios_base::sync_with_stdio(0);
> while (cin >> l >> r >> c && l + r + c)
> {
> int ans = -1;
> memset(vis, 0, sizeof vis);
> queue<Node> q;
> for (int i = 0; i < l; ++i)
> for (int j = 0; j < r; ++j)
> for (int k = 0; k < c; ++k)
> {
> //cout << i << j << k << endl;
> cin >> mp[i][j][k];
> if (mp[i][j][k] == 'S')
> {
> q.push(Node(i, j, k, 0));
> vis[i][j][k] = 1;
> }
> }
> while (!q.empty())
> {
> Node e = q.front(); q.pop();
> for (int i = 0; i < 6; ++i)
> {
> int nz = e.z + dz[i], nx = e.x + dx[i], ny = e.y + dy[i], ndis = e.dis + 1;
> if (0 <= nz && nz < l && 0 <= nx && nx < r && 0 <= ny && ny < c && mp[nz][nx][ny] != '#' && !vis[nz][nx][ny])
> {
> if (mp[nz][nx][ny] == 'E')
> ans = ndis;
> vis[nz][nx][ny] = 1;
> q.push(Node(nz, nx, ny, ndis));
> }
> }
> }
> if (ans == -1)
> cout << "Trapped!\n";
> else cout << "Escaped in " << ans << " minute(s).\n";
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator