PAT 1091. Acute Stroke (30)

用BFS做的。#include <stdio.h>#include <queue>using namespace std;struct node{int i,j,k;node(int i=-1,int j=-1,int k=-1):i(i),j(j),k(k){}//!!};int M,N,L,T;bool visited[61][1280][128];int pic[61][1280][128];int local,total;queue<node> q;bool avail(int i,int j,int k){if (i>=L||j>=M||k>=N||i<0||j<0||k<0)return false;if (pic[i][j][k]==0)return false;if (visited[i][j][k]==true)return false;return true;}void push(int i,int j,int k){if (avail(i, j, k)) {visited[i][j][k]=1;node newP(i,j,k);q.push(newP);local++;}}void BFS(){while (!q.empty()) {node tmp=q.front();q.pop();int i=tmp.i,j=tmp.j,k=tmp.k;push(i-1,j,k);push(i+1,j,k);push(i,j-1,k);push(i,j+1,k);push(i,j,k-1);push(i,j,k+1);}}int main(){//freopen("/Users/pantingting/Documents/code/data/input", "r", stdin);scanf("%d%d%d%d",&M,&N,&L,&T);for (int i=0; i<L; i++){for (int j=0; j<M; j++){for (int k=0; k<N; k++){scanf("%d",&pic[i][j][k]);visited[i][j][k]=false;}}}for (int i=0; i<L; i++) {for (int j=0; j<M; j++) {for (int k=0; k<N; k++) {if (avail(i, j, k)) {node nd(i,j,k);q.push(nd);visited[i][j][k]=true;local=1;BFS();if (local>=T) {total+=local;}}}}}printf("%d\n",total);return 0;}

,只是需要垮上后座的勇气和一颗想走即走的心,

PAT 1091. Acute Stroke (30)

相关文章:

你感兴趣的文章:

标签云: