图之邻接矩阵,深度遍历,广度遍历,连通分量个数

本文介绍了如何对图进行深度优先搜索(DFS)和广度优先搜索(BFS),并提供了样例输入和输出。在DFS中,从顶点0开始遍历,得到特定路径;而在BFS中,讨论了如何计算连通分量个数,示例显示连通分量为3,并展示了遍历结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.深度遍历 DFS

类似于树的先根遍历

如图,上述图的深度遍历输出为ADCBE

给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始

 

class Graph 
{ 
private:
    int flag[N];//状态数组
    int Vexnum;//图的顶点数量
    int Matrix[N][N];  //邻接矩阵
    void DFS(int v);
public: 
    Graph() 
    { 
        for(int i=0;i<N;i++)
            flag[i]=0;
    } 
    void DFStra();
    void SetMatrix(int n,int p[N][N]);
}
void Graph::SetMatrix(int n,int p[N][N])//设置邻接矩阵
{
    Vexnum=n;
    for(int i=0;i<Vexnum;i++)
        for(int j=0;j<Vexnum;j++)
        {
            Matrix[i][j]=p[i][j];   
        }
}
void Graph::DFStra()
{
    int i;
    for(i=0;i<Vexnum;i++)//可能有多个连通图
    {
        if(flag[i]==0)//找到一个状态为0的顶点
            DFS(i);
    }
    cout<<endl;
}
 
vo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值