7 条题解

  • 1
    @ 2022-1-25 15:19:50
    /*********************************
    备注:
    *********************************/
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <queue>
    #include <math.h>
    #include <vector>
    #include <algorithm>
    #include <iomanip>
    #include <stack>
    using namespace std;
    #define LL long long
    const int N =1e5+10;
    const int INF =0x3f3f3f3f;
    int mp[100][100],a[100][100],n,m;
    int dx[]{0,-1,0,1};
    int dy[]{-1,0,1,0};
    struct node{
    	int x,y;
    };
    int bfs(int x,int y){
    	queue<node> p;
    	p.push((node){x,y});
    	a[x][y]=1;
    	int sum=1;
    	while(!p.empty()){
    		node t=p.front(); 
    		p.pop();
    		for(int i=0;i<4;i++){
    			x=t.x+dx[i];
    			y=t.y+dy[i];
    			int s=mp[t.x][t.y]&(1<<i);
    			if(s==0&&!a[x][y]){
    				a[x][y]=++sum;
    				p.push((node){x,y});
    			} 
    		} 
    	}
    	return sum;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=0;i<n;i++){
    		for(int j=0;j<m;j++){
    			cin>>mp[i][j]; 
    		}
    	}
    	int num=0,maxx=0;
    	for(int i=0;i<n;i++){
    		for(int j=0;j<m;j++){
    			if(a[i][j]==0){
    				num++;
    				maxx=max(maxx,bfs(i,j));
    			}
    		}
    	}
    	cout<<num<<endl;
    	cout<<maxx<<endl;
    	return 0;
    }
    

    信息

    ID
    1344
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    127
    已通过
    56
    上传者