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

数学(四)

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),接着再看更方便。

相关小说

御妖诀 连载中
御妖诀
月无年
“苏荼…你骗的本王好苦啊…”他等了她三万年,换来的,只是一副空壳罢了。那个曾经爱笑的苏荼,如今变成了杀人的刀。在面对君临御的时候,你的剑也会......
6.3万字4个月前
你好,大妖 连载中
你好,大妖
这条小鱼在乎捏
我是一个半人半妖的妖怪我出生就被诅咒过所以我父母就不要我了丢给了我师傅白泽但是师傅说以后会一只大妖叫乘黄的非常爱我爱我?为什么也要丢下我?
0.8万字4个月前
魔法之语 连载中
魔法之语
yes莫
千年前的玛吉拉大陆,是一片生灵涂炭的世界。精灵女孩柒月意外被老师伊西斯所救,从此开始她漫长的一生……
2.9万字2个月前
神修大陆 连载中
神修大陆
唐朝汐
在这个神修的大陆,法术强者为王的大陆上,有无数宗门和学院,可是有这么一个宗门他们以蝶为主,以音为辅,以扇为攻,宗门里的亲生血脉者刚会有一种特......
8.0万字1个月前
重生之顶尖修真者 连载中
重生之顶尖修真者
一夜长雨
重生女x狼狗男甄秋重生到修真世界,在这个过程中与陌桦相遇,二人从互相试探到真心相待,甄秋一边在修真世界努力升级,一边应对各种阴谋诡计,最终成......
1.3万字1个月前
长相思之入颖相思改篇版 连载中
长相思之入颖相思改篇版
雪雨森林
长相思改篇,若有不喜欢的大大们可以不看,请大大们不喜勿喷。
0.7万字22小时前