当前位置: 首页 > news >正文

常州市建设工程质监站网站各国网站建设排名

常州市建设工程质监站网站,各国网站建设排名,私人服装定制网站,网站建设 排名宝下拉对于任给的一张无向带权连通图#xff0c;求出其最小生成树。 题目要求: (1)编程创建一幅图 (2)输出创建的图 (3)编写Prim算法代码#xff0c;实现图的最小生成树求解#xff0c;且输出最小生成树 (4)编写Kruskal算法代码#xff0c;实现图的最小生成树求解#xff0c;且…对于任给的一张无向带权连通图求出其最小生成树。 题目要求: (1)编程创建一幅图 (2)输出创建的图 (3)编写Prim算法代码实现图的最小生成树求解且输出最小生成树 (4)编写Kruskal算法代码实现图的最小生成树求解且输出最小生成树 (5)编写菜单允许用户选择相应操作 代码如下: #include iostream #include queue #include algorithm using namespace std; const int maxVertexNum 30;//最大顶点数 const int noEdge 99999999;//用来记录两个顶点之间没有边 const int ERROR -1;//发生错误class Graph { private :class Edge{public :int v1;int v2;int w;};int edgeNum;//边数int vertexNum;//顶点数int vertexs[maxVertexNum][maxVertexNum];//邻接矩阵bool vis[maxVertexNum];//用来标记是否访问过该顶点int dist[maxVertexNum];//prim算法中用来记录该结点离最小生成树的距离int parent[maxVertexNum];//prim算法中用到Edge edge[maxVertexNum];//用来记录边方便输出int totalWeight;//最小权重和int set[maxVertexNum];//kruskal算法中集合数组利用并查集算法来判断是否构成回路Edge kEdge[maxVertexNum];//kruskal算法中所用用来记录创建的图的信息在用kruskal算法时不是用邻接矩阵存储的图而是用了这个结构体数组来存储public:void menu(){char c;while (true){cout --------邻接矩阵存储的图-------------- endl;cout --------输入 c 创建图----------------- endl;cout --------输入 p 输出图----------------- endl;cout --------输入 r 使用prim算法----------- endl;cout --------输入 k 使用kruskal算法-------- endl;cout --------输入 e 退出程序--------------- endl;cout ---------顶点从0开始------------------ endl;cin c;switch (c){case c:buildGraph();cout 创建完毕,按任意键继续 endl;c getchar();//吃回车c getchar();//吃任意键system(cls);//刷新屏幕break;case p:printGraph();cout 输出完毕,按任意键继续 endl;c getchar();c getchar();system(cls);break;case r:prim();cout 输出完毕,按任意键继续 endl;c getchar();c getchar();system(cls);break;case k:kruskal();cout 输出完毕,按任意键继续 endl;c getchar();c getchar();system(cls);break;case e:return;}}}Graph() :vertexNum(0), edgeNum(0){initVis();for (int i 0; i maxVertexNum; i){for (int j 0; j maxVertexNum; j){vertexs[i][j] noEdge;}}}private:void initSet(){for (int i 0; i vertexNum; i) set[i] i;}void Union(int root1, int root2){int x Find(root1);int y Find(root2);if (x ! y){set[x] y;}}int Find(int x){if (set[x] ! x) return Find(set[x]);else return x;}void initVis(){for (int i 0; i maxVertexNum; i){vis[i] false;}}void buildGraph(){cout 请输入节点数和边数 endl;cin vertexNum edgeNum;int e1, e2;int w;for (int i 0; i edgeNum; i){cin e1 e2w;vertexs[e1][e2] w;vertexs[e2][e1] w;kEdge[i].v1 e1;kEdge[i].v2 e2;kEdge[i].w w;}}void printGraph(){for (int i 0; i vertexNum; i){vis[i] true;for (int j 0; j vertexNum; j){if (!vis[j]vertexs[i][j] ! noEdge){cout i - j vertexs[i][j] endl;}}}initVis();}int findMinDist(){int minVertex;int minDist noEdge;for (int i 0; i vertexNum; i){if (dist[i] ! 0 dist[i] minDist){minDist dist[i];minVertex i;}}if (minDist noEdge) return minVertex;else return ERROR;}void prim(){for (int i 0; i vertexNum; i){dist[i] vertexs[0][i];parent[i] 0;}totalWeight 0;int cnt 0;dist[0] 0;parent[0] -1;cnt;int v;while (true){v findMinDist();if (v ERROR) break;edge[cnt].v1 parent[v];edge[cnt].v2 v;edge[cnt].w dist[v];totalWeight dist[v];dist[v] 0;cnt;for (int w 0; w vertexNum; w){if (dist[w] ! 0 vertexs[v][w] noEdge){dist[w] vertexs[v][w];parent[w] v;}}}if (cnt vertexNum){cout 此图不连通 endl;}else{for (int i 1; i cnt; i){cout edge[i].v1 - edge[i].v2 edge[i].w endl;}cout totalWeight totalWeight endl;}}//所有普通类成员函数都不能以函数指针的方式作为其他函数的入口函数。//所以这里的cmp函数要加上staticstatic bool cmp(Edge a, Edge b){return a.w b.w;}void kruskal(){initSet();sort(kEdge,kEdgeedgeNum,cmp);int cnt 0;int idx 0;totalWeight 0;while (cnt vertexNum - 1 idx edgeNum){int v1 kEdge[idx].v1;int v2 kEdge[idx].v2;if (Find(v1) ! Find(v2)){edge[cnt].v1 v1;edge[cnt].v2 v2;edge[cnt].w kEdge[cnt].w;totalWeight edge[cnt].w;cnt;Union(v1, v2);}idx;}if (cnt vertexNum - 1){cout 此图不连通 endl;}else{for (int i 0; i vertexNum - 1; i){cout edge[i].v1 - edge[i].v2 edge[i].w endl;}cout totalWeight totalWeight endl;}}};int main() {Graph g;g.menu();return 0; }示例
http://wiki.neutronadmin.com/news/349864/

相关文章:

  • 网站建设 软件开发什么网站专做宠物物品
  • 西宁网站建设报价ew君博贴心2015网站备案没下来
  • 直播平台网站建设触屏手机网站设计
  • 比较好的高端网站制作公司呼和浩特免费制作网站
  • 网站建设和系统集成wordpress手机编辑器插件
  • 医疗 企业 网站制作泰安房产网
  • 网站建设公司怎么做的中铁三局招聘事件
  • 如何做彩票网站信息奉化市住房和城乡建设局网站
  • 钓鱼网站在线下载网站服务器出错了怎么办
  • 上海专业做网站较好的公司有哪些wordpress商品列表
  • 衣服定制的app有哪些seo外包杭州
  • 深圳旅游公司网站wordpress主题安装不
  • 手表网站建设规划书东道设计公司待遇如何
  • 网站发布 图片看不到开发公司解除前期物业服务合同
  • 做个人网站要多少钱如何把图片做网站背景
  • 哈尔滨做网站搭建的腾讯云服务器搭建网站
  • wordpress程序网站深圳网站建设的客户在哪里
  • 方特网站是谁做的flask网站开发源码
  • 大公司做网站网站logo上传
  • 营销策划推广公司seo优化排名平台
  • 扬州市建设工程造价管理站网站深圳市建工建设集团有限公司官网
  • 重庆汽车网站建设wordpress做付费下载站
  • vs 2017网站开发php淘宝网首页
  • 阿里云网站建设 部署与发布成都网站建设 seo
  • 北京网站建设公司华网制作作杭州外贸网站多少钱
  • 提供网站建设和制作百度软件下载
  • 网站建设工程师职责说明建站网站哪个最好
  • 深圳网站建设力荐上榜网络wordpress 如何重启
  • 张裕网站建设的目标中国企发网
  • 网站主页与导航栏的设计网站建设的资料的准备