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

来源:互联网 发布:童装 淘宝 网店推荐 编辑:程序博客网 时间:2024/06/09 19:26
#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;}

0 0
原创粉丝点击