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

数学(四)

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

相关小说

美人虞 连载中
美人虞
煎馍馍
灵族怎可喜欢上深海里的鲛人,跨物种的恋爱,这是会乱套的。旁人眼中,那位明媚张扬的女孩不信邪般的与鲛人谈恋爱,简直是无可救药。它们不知道女孩有......
1.9万字8个月前
失去了,才去爱(复仇记) 连载中
失去了,才去爱(复仇记)
TK01234
(我叫周余,我的爸爸妈妈并不喜欢我,可却把我生了下来,我有一个妹妹和哥哥,哥哥叫周明。妹妹是养女,哥哥和爸爸妈妈们都很喜欢他,妹妹叫周甜。)......
1.9万字4个月前
浮响都市 连载中
浮响都市
浮海紫云
【根据现实生活中的人而改编的“神奇故事”名字会稍加修改,每个角色的‘个性及行为设定’并不符合现实中的本人,不喜请勿喷!】超能异者与魔物的战役......
53.8万字2个月前
被全帝国宠上天的omega 连载中
被全帝国宠上天的omega
轩清淼
不善言辞为爱疯批强悍冷面战神A特兰迪x害羞内向软糯可爱为爱牺牲团宠O王一愽满心的爱恋却只被爱人当做度过易感期的工具人!永远比不上心上人的白月......
2.4万字2个月前
原来我就是你 连载中
原来我就是你
鱼仔璃
讲述的是这是一个鬼怪横行的世界女主是玄青山玄清观的关门弟子玄清观的继承人下一任观主,因为贪玩跑到人间去但因为使用法术害死不少人女主的师傅很生......
0.3万字2个月前
唯一的知情人 连载中
唯一的知情人
仿古雀鸟
陈小梦以月冰的身份,诞生了这个充满灵力的庸俗设定岛屿中,能力规则都懂,唯一对自己的身份抱有谜题,从碎碎念到默不作声(包含搞笑成分并且前几章,......
7.5万字2个月前