BFS判断连通性-S276求矩阵块数

/*BFS实现*/
#include 
#include
using namespace std;
const int MAXV=100;//定义const量
struct node//定义结构体
{
    int x,y;
} Node;
int N,M;
int G[MAXV][MAXV];
bool vest[MAXV][MAXV];//inque[i][j]为true,则表示该点曾经入队
int go[4][2]={0,1,0,-1,1,0,-1,0};//4向数组
bool judge(int i,int j)
{
    if(i<0||i>=N||j<0||j>=M||vest[i][j]||G[i][j]==0)//在遍历矩阵块时才需要判断边界
        return false;
    return true;
}
void BFS(int i,int j)
{
    queue que;
    Node.x=i;
    Node.y=j;
    que.push(Node);
    vest[i][j]=true;
    while(!que.empty())
    {
    node top=que.front();
    que.pop();
    for(int i=0; i<4; i++)
    {
        Node.x=top.x+go[i][0];
        Node.y=top.y+go[i][1];
        if(judge(Node.x,Node.y))
        {
            que.push(Node);
            vest[Node.x][Node.y]=true;
        }
    }
    }
}
int main()
{
    fill(vest[0],vest[0]+MAXV*MAXV,false);

    for(int i=0; i>N>>M;
    for(int i=0; i>G[i][j];
        }
    }

    int cnt=0;
    for(int i=0; i

你可能感兴趣的:(BFS判断连通性-S276求矩阵块数)