数学联邦政治世界观
超小超大

数学(四)

flood fill能够在线性时间复杂度内,找到某个点所在的连通块。

四联通常用数组加一层循环判断

int dx[4] = {0, -1, 0, 1}, dy[4] = {-1, 0, 1, 0};

八联通常用二层循环遍历‬

tip:注意二层循环排除自己的情况

for (int i = t.x - 1; i <= t.x + 1; i ++ )

for (int j = t.y - 1; j <= t.y + 1; j ++ )

注意循环条件内的if特判,参考代码如下(应该是acwing1098)

include:<iostream>

include:<queue>

include:<utility>

using namespace std;

define:x first

define:y second

define:IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);

typedef pair<int,int> PII;

const int N=55;

queue<PII>q;

int g[N][N];

bool st[N][N];

int cnt=0, ss=0, n, m;

int dx[4] = {0, -1, 0, 1}, dy[4] = {-1, 0, 1, 0};

int bfs(int a, int b) {

q.push({a, b});

st[a][b]=true;

int area=0;

while(q.size()) {

auto t=q.front();

q.pop();

area++;

for(int i=0; i<4; i++) {

int sx=t.x+dx[i], sy=t.y+dy[i];

if(sx<=0 || sy<=0 || sx>n || sy>m) continue;

if(g[t.x][t.y] >> i & 1) continue;

if(st[sx][sy]) continue;

q.push({sx, sy});

st[sx][sy]=true;

}

}

return area;

}

void solve() {

cin>>n>>m;

for(int i=1; i<=n; i++) {

for(int j=1; j<=m; j++) {

cin>>g[i][j];

}

}

for(int i=1; i<=n; i++) {

for(int j=1; j<=m; j++) {

if(!st[i][j]) {

ss=max(ss, bfs(i, j));

cnt++;

}

}

}

cout<

cout<

}

int main() {

IOS;

int t=1;

while(t--) {

solve();

}

return 0;

}

数学联邦政治世界观提示您:看后求收藏(笔尖小说网http://www.bjxsw.cc),接着再看更方便。

相关小说

笑花的开挂人生! 连载中
笑花的开挂人生!
求放过呆萌花
笑花和系统还有pws的搞笑故事,笑花和系统在等你来!
0.4万字2个月前
自恋病 连载中
自恋病
斯派修
没有实体cp,但也不是主人公,单独幻想。
0.4万字2个月前
丧尸界里当军师 连载中
丧尸界里当军师
万紫万红
1V1四对cp凌芊芊从小与他人不同一次她跟随老奶奶进入另一个异空间。当起了界丧尸家族的国师。开启国师之路,慢慢的自己的身世之谜浮出水面知晓自......
23.6万字2个月前
缤纷多彩小故事 连载中
缤纷多彩小故事
风雪轮
多个故事,应该是很简洁的一些故事,一个故事开头结尾结束的很快
3.9万字2个月前
无限流:疯批美人她十恶不赦 连载中
无限流:疯批美人她十恶不赦
菱意笙枫
  【无限流/双女主/双强/金手指/微悬疑】池漾意外进入了无限流副本当中,开局不但获得了金手指,还被副本当中的队友抢着要,为了拉她入伙,还额......
7.7万字2周前
永恒探险记:冰霜再降 连载中
永恒探险记:冰霜再降
百里沧陷
几位外貌15岁而真实年龄确实3000多岁的长生者,来到了星落学院,遇到了一个蓝衣少女,而少女貌似也是和他们一样的长生者
2.2万字5天前