本题不能再自定义偏移量了,需要按照正常的xy定义偏移量,温习一下移运算(左移右移)
题目描述
blablabla
样例
#include<iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define x first
#define y second
typedef pair<int,int>PII;
int m,n;
bool str[55][55];
int g[55][55];
PII q[100010];
int bfs(int l,int r)
{
int dy[4]={-1,0,1,0},dx[4]={0,-1,0,1};
int hh=0,tt=0;
int res=0;
q[0]={l,r};
str[l][r]=true;
while(hh<=tt)
{
PII t=q[hh++];
res++;
for(int i=0;i<4;i++)
{
int a=t.x+dx[i],b=t.y+dy[i];
if(a<1||b<1||a>m||b>n||str[a][b])
{
continue;
}
if(g[t.x][t.y]>>i&1)continue;
q[++tt]={a,b};
str[a][b]=true;
}
}
return res;
}
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>g[i][j];
}
}
int ant=0,cnt=0;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(!str[i][j])
{
ant=max(ant,bfs(i,j));
cnt++;
}
}
}
cout<<cnt<<endl;
cout<<ant<<endl;
}
算法1
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla