救命,疑似被盗号
  • 板块学术版
  • 楼主donyking
  • 当前回复13
  • 已保存回复13
  • 发布时间2022/8/17 11:39
  • 上次更新2023/10/27 15:00:26
查看原帖
救命,疑似被盗号
577384
donyking楼主2022/8/17 11:39

code

#include<bits/stdc++.h>
using namespace std;
int n,m;
int id=0;
int a[55][55][4];
int vis[55][55];
int f[55*55];
int to[4][2]={{0,-1},{-1,0},{0,1},{1,0}};
int bfs(int x,int y){
    int sum=1;
    queue<pair<int,int> > Q;
    Q.push({x,y});
    while(!Q.empty()){
        int i=Q.front().first;
        int j=Q.front().second;
        Q.pop();
        for(int k=0;k<=3;k++){
            if(a[i][j][k]) continue;
            int tx=i+to[k][0];
            int ty=j+to[k][1];
            if(vis[tx][ty]!=0) continue;
            sum++;
            vis[tx][ty]=id;
            Q.push({tx,ty});
        }
    }
    return sum;
}
int main(){
    scanf("%d%d",&m,&n);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            int x;
            scanf("%d",&x);
            if(x&1) a[i][j][0]=1;
            if(x&2) a[i][j][1]=1;
            if(x&4) a[i][j][2]=1;
            if(x&8) a[i][j][3]=1; 
        }
    }
    int ans=0,ans2=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(!vis[i][j]){
                vis[i][j]=++id;
                f[id]=bfs(i,j);
                ans=max(ans,f[id]);
                ans2++; 
            }
        }
    }
    printf("%d\n%d\n",ans2,ans);
    int z1=0,z2,z3;
    char z4;
    for(int j=1;j<=m;j++){
        for(int i=n;i>=1;i--){
            for(int k=1;k<=2;k++){
                if(a[i][j][k]){
                    int tx=i+to[k][0];
                    int ty=j+to[k][1];
                    if(z1<f[vis[i][j]]+f[vis[tx][ty]] && vis[i][j]!=vis[tx][ty]){
                        z1=f[vis[i][j]]+f[vis[tx][ty]];
                        z2=i,z3=j;
                        if(k==1){
                            z4='N';
                        }
                        else{
                            z4='E';
                        }
                    }
                }
            }
        }
    }
    printf("%d\n%d %d %c",z1,z2,z3,z4);
}

但我从来没动过这道题

2022/8/17 11:39
加载中...