zoukankan      html  css  js  c++  java
  • PAT A1091 Acute Stroke

    对于坐标平面的bfs模板题~

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1010;
    bool visit[1300][130][80]={false};
    int adj[1300][130][80];
    int n,m,l,K;
    int X[6]={1,0,0,-1,0,0};
    int Y[6]={0,1,0,0,-1,0};
    int Z[6]={0,0,1,0,0,-1};
    struct node {
        int x,y,z;
    };
    bool judge (int x,int y,int z) {
        if (x>=n||x<0||y>=m||y<0||z>=l||z<0) 
        return false;
        if (adj[x][y][z]==0) return false;
        if (visit[x][y][z]==true) return false;
        return true;
    }
    int bfs (int x,int y,int z) {
        queue<node> q;
        q.push({x,y,z});
        int cnt=0;
        visit[x][y][z]=true;
        while (!q.empty()) {
            node now=q.front();
            q.pop();
            cnt++;
            for (int i=0;i<6;i++) {
                int tx=now.x+X[i];
                int ty=now.y+Y[i];
                int tz=now.z+Z[i];
                if (judge(tx,ty,tz)) {
                    q.push({tx,ty,tz});
                    visit[tx][ty][tz]=true;
                    //cnt++;
                }
            }
        }
        if (cnt>=K) return cnt;
        return 0;
    }
    int main () {
        scanf ("%d %d %d %d",&n,&m,&l,&K);
        for (int i=0;i<l;i++) 
        for (int j=0;j<n;j++)
        for (int k=0;k<m;k++)
        scanf ("%d",&adj[j][k][i]);
        int cnt=0;
        for (int i=0;i<l;i++)
        for (int j=0;j<n;j++)
        for (int k=0;k<m;k++)
        if (visit[j][k][i]==false&&adj[j][k][i]==1) cnt+=bfs(j,k,i);
        printf ("%d\n",cnt);
        return 0;
    }
  • 相关阅读:
    自己的一个ALV隐藏列例子
    BAPI FOR MD61,MD62,MD63
    ALV 实现多表格 ( 多表格的ALV List
    MESSEG 类型
    Linux 启动tomcat服务器2
    oracle 笔记记录
    昨天、今天、明天
    Linux操作系统下MySQL数据库的使用方法(345)
    PHP安装问题
    另样文字 借你来欣赏
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12301521.html
Copyright © 2011-2022 走看看