您的位置:首页 > 其它

图的广度优先遍历邻接矩阵

2016-07-24 11:50 155 查看
#include <iostream>

using namespace std;

const int INF = 9999;

int main()
{
int i,j,n,m,a,b,cur,book[101] = {0},e[101][101];
int qu[101],tail,head;
cin>>n>>m;
//初始化二维矩阵
for(i = 1;i <= n;i++)
{
for(j = 1;j <= n;j++)
{
if(i == j)
{
e[i][j] = 0;
}
else
{
e[i][j] = INF;
}
}
}
//读入顶点之间的边
for(i = 1;i <= m;i++)
{
cin>>a>>b;
e[a][b] = 1;
e[b][a] = 1;
}
//队列初始化
head = 1;
tail = 1;
//从1号顶点出发,将1号队列加入队列
qu[tail] =  1;
tail++;
book[1] = 1;
//当队列不为空的时候循环
while(head < tail)
{
cur = qu[head];
for(i = 1;i <= n;i++)
{
if(e[cur][i] == 1 && book[i] == 0)
{
qu[tail] = i;
tail++;
book[i] = 1;
}
}
//如果tail大于n,则表明所有的顶点已经被访问过了
if(tail > n)
{
break;
}
head++;
}
for(i = 1;i < tail;i++)
{
cout<<qu[i]<<" ";
}
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: