搜索
热搜: NOIP OIer 神牛
查看: 215|回复: 1

1292

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2025-1-20 11:40:07 | 显示全部楼层 |阅读模式
#include<bits/stdc++.h>
using namespace std;
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};
int a[51][51][4],q[5001][3];
int p,i,j,n,m,tot=0,maxx=-1;
bool b[51][51];
void bfs(int x,int y){
        memset(q,0,sizeof(q));
        tot++;
        int tail=1,head=0,xx,yy;
        q[1][1]=x;q[1][2]=y;b[x][y]=0;
        while(head<tail){
                head++;
                for(int i=0;i<=3;i++){
                        xx=q[head][1]+dx[i];
                        yy=q[head][2]+dy[i];
                        if(xx>0&&xx<=m&&yy>0&&yy<=n)
                        if(b[xx][yy]==true&&(a[q[head][1]][q[head][2]][0]&(1<<i))==0){
                                tail++;
                                b[xx][yy]=false;
                                q[tail][1]=xx;
                                q[tail][2]=yy;
                                }
                        }
                }
        maxx=max(tail,maxx);
}
int main(){
        memset(b,true,sizeof(b));
        scanf("%d%d",&m,&n);
        for(i=1;i<=m;i++){
                for(j=1;j<=n;j++){
                        scanf("%d",&p);
                        a[i][j][0]=p;
                }
        }
        for(i=1;i<=m;i++){
                for(j=1;j<=n;j++){
                        if(b[i][j]) bfs(i,j);
                }
        }
        printf("%d\n%d\n",tot,maxx);
    return 0;
}

回复

使用道具 举报

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2025-1-20 11:47:59 | 显示全部楼层
111111111111111111111111
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表