栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

测试无向图的连通性

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

测试无向图的连通性

这是图遍历的一个经典应用

首先,什么是连通呢?

如果顶点A与顶点B之间有路径存在,则称A、B之间连通

如果一个图中,任意两点之间都连通,则称这个图为连通图

非连通图的极大连通子图,称为图的连通分量

注意:此处的连通分量不止一个哦

当我们学会图的深度与广度优先遍历后,这个问题就迎刃而解了

 

从上面的结果可以看出,

深度/广度遍历的每一行为一个连通分量

如果输出只有一行,则无向图具有连通性,否,则不具有连通性。

因此,将深度/广度遍历算法稍加修改,即可达到测试无向图连通性的功能

此处直接上代码(以深度优先搜索为例),

代码输入n,m分别代表顶点数,边数

输入m行,每行的u,v表示顶点u与v之间有边

输出结果为1行,表示无向图的连通分量个数

#include
using namespace std;
const int mxn = 10005;
//图的存储:采用邻接表存储方式
class adjMatrixGraph
{
public:
    adjMatrixGraph(int vsize);//构造函数 vsize代表顶点数,d[]数组表示顶点的名称A,B……
    void insert(int u,int v);//插入函数,插入一条由x指向y的有向边
    int judgeCon();//计算图的连通分量
    ~adjMatrixGraph();//析构函数
private:
    int vers,edges;
    struct edgeNode
    {
        int end;
        edgeNode *next;
        edgeNode(int e,edgeNode *n=NULL)
        {
            end=e;
            next=n;
        }
    };
    struct verNode
    {
        edgeNode *head;
        verNode(edgeNode *h=NULL) {head=h;}
    };
    verNode *verList;//创建数组形式的节点表
    void dfs(int v,bool visited[]);
};
//构造函数
adjMatrixGraph::adjMatrixGraph(int vsize)
{
    vers=vsize;
    edges=0;
    verList=new verNode[vsize];
}
//析构函数
adjMatrixGraph::~adjMatrixGraph()
{
    edgeNode *p;
    for(int i=0;inext;
            delete p;
        }
    }
    delete [] verList;
}
//插入函数
void adjMatrixGraph::insert(int u, int v)
{
    verList[u].head=new edgeNode(v,verList[u].head);
    ++edges;
}

int adjMatrixGraph::judgeCon()
{
    int count=0;
    bool *visited=new bool[vers];
    for(int i=0;iend]==false)
            dfs(p->end,visited);
        p=p->next;
    }
}
int main(void){
    int n,m;
    cin>>n>>m;
    adjMatrixGraph graph(n);
    for(int i=0;i>u>>v;
        // your code
        graph.insert(u,v);
        graph.insert(v,u);//上述图的存储为有向,要变为无向图,进行两次插入路径操作即可
    }
    cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934899.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号