L3-004 肿瘤诊断(天梯赛)

天梯赛就是喜欢搞些复杂的dfs和bfs
这题就是一道三维的bfs
#include
#include
using namespace std;
struct Node
{
int a,b,c;
Node(int a1,int b1,int c1):a(a1),b(b1),c(c1){};
};
const int maxa=1286+5,maxb=128+5,maxc=60+5;
int G[maxa][maxb][maxc];
int vis[maxa][maxb][maxc];
int M,N,L,T;
int pa[6]={1,-1,0,0,0,0},pb[6]={0,0,1,-1,0,0},pc[6]={0,0,0,0,1,-1};
bool isedgeok(int a,int b,int c)
{
if(a=0&&b=0&&c=0) return true;
return false;
}
int bfs(int a,int b,int c)
{
if(!G[a][b][c]||vis[a][b][c]) return 0;
int cnt=1;
vis[a][b][c]=1;
queue qu;
qu.push(Node(a,b,c));//bug 1
while(!qu.empty())
{
auto tmp=qu.front();
qu.pop();
a=tmp.a,b=tmp.b,c=tmp.c;
for(int i=0;i<6;++i)
{
int tmpa=a+pa[i],tmpb=b+pb[i],tmpc=c+pc[i];
if(isedgeok(tmpa,tmpb,tmpc)&&!vis[tmpa][tmpb][tmpc]&&G[tmpa][tmpb][tmpc])//bug 0
{
cnt++;
qu.push(Node(tmpa,tmpb,tmpc));
vis[tmpa][tmpb][tmpc]=1;
}
}
}
if(cnt>=T) return cnt;
return 0;
}
int main()
{
cin>>M>>N>>L>>T;
for(int i=0;i>G[j][k][i];
int sum=0;
for(int i=0;i