无向图 邻接矩阵bfs 最简单
Posted guoyujiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无向图 邻接矩阵bfs 最简单相关的知识,希望对你有一定的参考价值。
上图:
上码:
#include <iostream>
#include <climits>
#include <queue>
using namespace std;
#define MAX 10
int mat[MAX][MAX];
int visited[MAX];
int n=6;
void bfs(int pos)
{
cout<<"bfs from "<<pos<<" :"<<endl;
queue<int> qwq;
int r; //记录队头
cout<<pos<<‘ ‘;
qwq.push(pos);
visited[pos]=1;
while(!qwq.empty())
{
r = qwq.front();
qwq.pop();
for(int i=0; i<n; i++)
if(mat[r][i]==1 && !visited[i]){
cout<<i<<" ";
qwq.push(i);
visited[i]=1;
}
}
}
void travelallnodes()
{
cout<<"travel all nodes :"<<endl;
int partnum=1;
for(int i=0; i<n; i++){
if(!visited[i]){
cout<<"part "<<partnum++<<" :"<<endl;
bfs(i);
cout<<endl<<endl;
}
}
cout<<"---travel all nodes over !"<<endl;
}
void init(){
for(int i=0; i<n; i++)
visited[i]=0;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
mat[i][j]=INT_MAX;
mat[0][1]=1,mat[0][2]=1,mat[0][4]=1;
mat[1][0]=1,mat[1][3]=1;
mat[2][0]=1,mat[2][4]=1;
mat[3][1]=1;
mat[4][0]=1,mat[4][2]=1;
for(int i=0; i<n; i++)
mat[i][i]=0;
}
int main()
{
init();
travelallnodes();
bfs(1);//从2开始遍历
}
以上是关于无向图 邻接矩阵bfs 最简单的主要内容,如果未能解决你的问题,请参考以下文章
用c语言编程 1创建图的邻接矩阵和邻接表 2验证图的深度优先、广度优先遍历算法 3验证最短路径