题目
思路
这是一道典型的bfs染色问题,先遍历数组,只要没有标记为1,就开始bfs染色,最后输出color数量
接下来,咱就来把代码拆开来看看:
1. 准备工作,设置地图数组,vis数组,还有bfs的偏移量
char a[11000][11000]; //地图
int vis[110][110]; //记录路径,有没有到过
int dx[4]={0,0,1,-1}; //偏移量
int dy[4]={1,-1,0,0};
int n,m,color=0; //color染色数
//结构体
struct point{
int x,y;
};
queue <point> q; //bfs队列
2. main函数内部 重点讲讲后面的,先遍历地图,只要找到符合要求的(a不是0),而且没去过(vis是0),就开始bfs广度优先搜索
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
for(int i=0;i<n;i&#