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

数学(四)

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

相关小说

秋桂花风 连载中
秋桂花风
蛙小呱
我oc小说,因为画技和屎一样,所以来写小说了
0.5万字10个月前
01所 连载中
01所
布莱尔绘
防止恶评,作者不特别说明角色们的性别。
0.2万字8个月前
眼悦 连载中
眼悦
御情@倾厄
这场一见钟情的梦很美!也很喜欢。梦里不知身是客,不知这场梦何时醒?更担心的是:不知能否接受醒来时的落空!如果可以对梦许愿,希望一直做下去,到......
25.1万字7个月前
别了亲爱的:用情至深 连载中
别了亲爱的:用情至深
不知名诗人
我又活了,拥有了新的身份,唯一没变的是对她的爱,这次我绝对要保护好她,熟悉的环境,重走一遍的剧情,我绝对不会让她再受伤了,我不会再唯唯诺诺,......
1.4万字6个月前
予你囚光 连载中
予你囚光
时珺3881882278
强制性的完本是为了更好的创作新的。因为有很多想法不让出来。
8.7万字6个月前
梦境丶 连载中
梦境丶
女青丶
死后意外进入梦境世界为了再次见到父母她开启了收集情感值的冒险以为事情会顺利进行可梦境背后好像有一个人在监视着一切……
1.0万字5个月前