//使用破圈法求解带权连通无向图的最小生成树
//由于还不是很会c++,脑子也不太好使,所以写的方法看起来很复杂
// 欢迎讨论
//ps:调试可以通过,但不能运行不知道为啥
#include <iostream>
#include <set>
#include<queue>
#include<stack>
#define MAXE 100
#define MAXV 15
#define MAXWEIGHT 1000
#define INF 1000
using namespace std;
class graph
{
private:
int **matrix,*mark;
int vNum,eNum;
public:
graph(){};
graph(int v)
{
if(v>=MAXV) cout<<"construct false"<<endl;
vNum=v;
eNum=0;
mark=new int[vNum];
for(int i=0;i<vNum;i++)
mark[i]=0;
matrix=new int*[vNum];
int i,j;
for(i=0;i<vNum;i++)
matrix[i]=new int[vNum];
for(i=0;i<vNum;i++)
for(j=0;j<vNum;j++)
matrix[i][j]=INF;
}
void showEdge() //展示邻接矩阵
{
cout<<"vnum: "<<vNum<<" enum: "<<eNum/2<<endl;
cout<<"邻接矩阵如下: "<<endl;
for(int i=0;i<vNum;i++)
for(int j=0;j<vNum;j++)
{
cout<<matrix[i][j]<<" ";
if(j==vNum-1)
{
cout<<endl;
cout<<endl;
}
}
}
void resetMark()
(c++)数据结构与算法之图:无向图两点间路径、判断环、破圈法构造最小生成树
最新推荐文章于 2024-08-11 21:33:40 发布
本文介绍了使用C++实现无向图的最小生成树的破圈法,包括非递归深度遍历、判断图中环以及删除最大权重边的过程。示例代码展示了如何创建图、设置边、删除边,并通过破圈法构造最小生成树。
摘要由CSDN通过智能技术生成