windows 2008 r2 安装php5.5+mysql+mssql+sqlsrv
2016-04-15 11:49
676 查看
#include <iostream>using namespace std;
struct Mgraph{ int vexnum; int arcnum; char *vertex; int **AdjMatrix; }; class Graph{ public: void CreateUDN(); void DestroyUDN(); void Minispantree_prim(); private: Mgraph gph; //邻接矩阵存储};
void Graph::CreateUDN(){ cout << "输入无向网的顶点数和边数:" << endl; cin >> gph.vexnum >> gph.arcnum; gph.vertex = (char *)malloc(gph.vexnum * sizeof(char)); int i,j,m,n; //m,n表示顶点信息对应的序号,w是权值 int w; char v1,v2; cout << "输入顶点信息:" << endl; for(i = 0;i < gph.vexnum;i++) cin >> gph.vertex[i]; gph.AdjMatrix = (int **)malloc(gph.vexnum * sizeof(int *)); for(i = 0;i < gph.vexnum;i++) gph.AdjMatrix[i] = (int *)malloc(gph.vexnum * sizeof(int)); for(i = 0;i < gph.vexnum;i++) for(j = 0;j < gph.vexnum;j++) gph.AdjMatrix[i][j] = INT_MAX; //INT_MAX cout << "输入一条边依附的两点及权值:" << endl; for(int k = 0;k < gph.arcnum;k++) { cin >> v1 >> v2 >> w; for(i = 0;i < gph.vexnum;i++) { if(v1 == gph.vertex[i]) m = i; if(v2 == gph.vertex[i]) n = i; } gph.AdjMatrix[m]
= gph.AdjMatrix
[m] = w; }}
void Graph::DestroyUDN(){ free(gph.vertex); for(int i = 0;i < gph.vexnum;i++) free(gph.AdjMatrix[i]); free(gph.AdjMatrix);} void Graph::Minispantree_prim(){ struct closedge { int adjvex; int lowcost; }; closedge *edge = (closedge *)malloc(gph.vexnum * sizeof(closedge)); int i,j,k = 0,u; int min; for(i = 0;i < gph.vexnum;i++) { if(i != k) { edge[i].adjvex = 0; edge[i].lowcost = gph.AdjMatrix[k][i]; } } edge[k].lowcost = 0; cout << "最小生成树的边如下:" << endl; for(i = 1;i < gph.vexnum;i++) { min = INT_MAX; for(j = 0;j < gph.vexnum;j++) if(edge[j].lowcost != INT_MAX &&edge[j].lowcost != 0 && edge[j].lowcost < min) { min = edge[j].lowcost; k = j; } u = edge[k].adjvex; edge[k].lowcost = 0; cout << "(" << gph.vertex[u] << "," << gph.vertex[k] << ")" << " "; for(j = 0;j < gph.vexnum;j++) if(gph.AdjMatrix[j][k] < edge[j].lowcost) { edge[j].lowcost = gph.AdjMatrix[j][k]; edge[j].adjvex = k; } } free(edge); cout << endl;}
int main(){ Graph gph; gph.CreateUDN(); gph.Minispantree_prim(); gph.DestroyUDN(); return 0;}
struct Mgraph{ int vexnum; int arcnum; char *vertex; int **AdjMatrix; }; class Graph{ public: void CreateUDN(); void DestroyUDN(); void Minispantree_prim(); private: Mgraph gph; //邻接矩阵存储};
void Graph::CreateUDN(){ cout << "输入无向网的顶点数和边数:" << endl; cin >> gph.vexnum >> gph.arcnum; gph.vertex = (char *)malloc(gph.vexnum * sizeof(char)); int i,j,m,n; //m,n表示顶点信息对应的序号,w是权值 int w; char v1,v2; cout << "输入顶点信息:" << endl; for(i = 0;i < gph.vexnum;i++) cin >> gph.vertex[i]; gph.AdjMatrix = (int **)malloc(gph.vexnum * sizeof(int *)); for(i = 0;i < gph.vexnum;i++) gph.AdjMatrix[i] = (int *)malloc(gph.vexnum * sizeof(int)); for(i = 0;i < gph.vexnum;i++) for(j = 0;j < gph.vexnum;j++) gph.AdjMatrix[i][j] = INT_MAX; //INT_MAX cout << "输入一条边依附的两点及权值:" << endl; for(int k = 0;k < gph.arcnum;k++) { cin >> v1 >> v2 >> w; for(i = 0;i < gph.vexnum;i++) { if(v1 == gph.vertex[i]) m = i; if(v2 == gph.vertex[i]) n = i; } gph.AdjMatrix[m]
= gph.AdjMatrix
[m] = w; }}
void Graph::DestroyUDN(){ free(gph.vertex); for(int i = 0;i < gph.vexnum;i++) free(gph.AdjMatrix[i]); free(gph.AdjMatrix);} void Graph::Minispantree_prim(){ struct closedge { int adjvex; int lowcost; }; closedge *edge = (closedge *)malloc(gph.vexnum * sizeof(closedge)); int i,j,k = 0,u; int min; for(i = 0;i < gph.vexnum;i++) { if(i != k) { edge[i].adjvex = 0; edge[i].lowcost = gph.AdjMatrix[k][i]; } } edge[k].lowcost = 0; cout << "最小生成树的边如下:" << endl; for(i = 1;i < gph.vexnum;i++) { min = INT_MAX; for(j = 0;j < gph.vexnum;j++) if(edge[j].lowcost != INT_MAX &&edge[j].lowcost != 0 && edge[j].lowcost < min) { min = edge[j].lowcost; k = j; } u = edge[k].adjvex; edge[k].lowcost = 0; cout << "(" << gph.vertex[u] << "," << gph.vertex[k] << ")" << " "; for(j = 0;j < gph.vexnum;j++) if(gph.AdjMatrix[j][k] < edge[j].lowcost) { edge[j].lowcost = gph.AdjMatrix[j][k]; edge[j].adjvex = k; } } free(edge); cout << endl;}
int main(){ Graph gph; gph.CreateUDN(); gph.Minispantree_prim(); gph.DestroyUDN(); return 0;}
相关文章推荐
- ntp服务
- 6. Zend_Uri
- Laravel框架异步队列配置流程
- thinkphp 结合phpexcel实现excel导入
- php 实现简单的登录
- php 实现简单的登录
- php 实现简单的登录
- Yii 常用命令
- php魔术常量,魔术方法
- 文章标题
- phpmyadmin文件上传上限修改
- php多虚拟主机配置
- laravel5 artisan
- 使用phpqrcode生成某一个页面的二维码
- PHP6连接SQLServer2005的三部曲
- php7 安装 及和php5的共存
- PHP不报错,显示500
- PHP不报错,显示500
- phpstorm 10 注册码 汉化包
- yii2 数据库操作详解(转载)