您的位置:首页 > 其它

图深度优先遍历邻接矩阵表示

2016-07-24 11:34 183 查看
#include <iostream>

using namespace std;

const int INF = 9999;
int book[101],sum,n,e[101][101];

void dfs(int cur);

int main()
{
int i,j,m,a,b;
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;
}
//从1号城市出发
book[1] = 1;        //标记1号顶点已访问
dfs(1);             //从1号顶点开始遍历
return 0;
}
//
void dfs(int cur)
{
int i;
cout<<cur<<" ";
sum++;
if(sum == n)        //所有的顶点都被访问过则直接返回
{
return;
}
for(i = 1;i <= n;i++)//找到与当前节点相连的结点
{
if((e[cur][i] == 1)&&(book[i] == 0))//找到一个结点并进行深度优先遍历
{
book[i] = 1;
dfs(i);
}
}
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: