HDU 1879(最小生成树问题,Prim)
当N为0时输入结束。
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #define MAX 105
- #define MAXCOST 99999999
- int n;
- int sum;
- int graph[MAX][MAX];
- void Prim()
- {
- int i,j,k,min;
- int lowcost[MAX];
- int adjvex[MAX];
- for(i=1;i<n;i++)
- lowcost[i]=graph[0][i]; //从第一个的顶点开始
- memset(adjvex,0,sizeof(adjvex));
- min=MAXCOST;
- for(i=1;i<n;i++)
- {
- min=MAXCOST;
- for(j=1;j<n;j++)
- if(adjvex[j]==false && lowcost[j]<min)
- {
- min=lowcost[j];
- k=j; //记下最小的点
- }
- adjvex[k]=true; //为true表示该权值已经是最小,为flase是还不确定,应继续更新
- for(j=1;j<n;j++)
- {
- if(adjvex[j]==false && lowcost[j]>graph[k][j]) //更新lowcost
- lowcost[j]=graph[k][j];
- }
- }
- for(i=1;i<n;i++)
- sum+=lowcost[i]; //这就是最小生成树
- }
- int main()
- {
- int m,i,j,a,b,c,d;
- while (scanf("%d",&n),n)
- {
- for (i=0;i<n;i++)
- {
- for (j=0;j<n;j++)
- {
- graph[i][j] = graph[j][i] = MAXCOST;
- }
- }
- m=n*(n-1)/2;
- for (i=1;i<=m;i++)
- {
- scanf("%d%d%d%d",&a,&b,&c,&d);
- if(d==0)
- graph[a-1][b-1]=graph[b-1][a-1]=c;
- else
- graph[a-1][b-1]=graph[b-1][a-1]=0;
- }
- sum=0;
- Prim();
- printf("%d/n",sum);
- }
- return 0;
- }
HDU 1879(最小生成树问题,Prim)相关推荐
- 实验1 最小生成树问题【Kruskal+Prim】
1.贪心算法思想 贪心算法的基本思想是找出整体当中每个小的局部的最优解,并且将所有的这些局部最优解合起来形成整体上的一个最优解.因此能够使用贪心算法的问题必须满足下面的两个性质: 1.整体的最优解可以 ...
- 【数据结构笔记29】最小生成树问题:Prim算法与Kruskal算法
本次笔记内容: 8.1.1 Prim算法 8.1.2 Kruskal算法 文章目录 最小生成树问题 什么是最小生成树(Minimum Spanning Tree) 贪心算法 Prim算法 Kruska ...
- 数据结构与算法-Prim算法解析与解决修路最小生成树问题
文章目录 简介 Prim算法 最小生成树 应用场景 问题描述 思路分析 代码实现 简介 Prim算法 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索 ...
- 【数据结构】最小生成树问题(Prim算法和Kruskal算法)
相关概念 连通图与它的生成树 连通图的生成树是包含图中全部顶点的一个极小连通子图.若图的顶点数为n,则它的生成树含有n-1条边.一个连通图可能拥有多个生成树. 最小生成树(Minimum-Spanni ...
- 使用贪心算法解决最小生成树问题。
使用贪心算法解决最小生成树问题. #include<iostream> #include<algorithm> using namespace std; const int M ...
- 【算法】Kruskal算法(解决最小生成树问题) 含代码实现
Kruskal算法和Prim算法一样,都是求最小生成树问题的流行算法. 算法思想: Kruskal算法按照边的权值的顺序从小到大查看一遍,如果不产生圈或者重边,就把当前这条边加入到生成树中. 算法的正 ...
- 最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题
最小生成树 kruskal In Electronic Circuit we often required less wiring to connect pins together. We can m ...
- Python小白的数学建模课-18.最小生成树问题
Python小白的数学建模课-18.最小生成树问题 最小生成树(MST)是图论中的基本问题,具有广泛的实际应用,在数学建模中也经常出现. 路线设计.道路规划.官网布局.公交路线.网络设计,都可以转化为 ...
- 数学建模之图论——图与网络模型(二)(最小生成树问题、最大流问题)
建议先看上一篇基本概念篇 https://blog.csdn.net/weixin_45755332/article/details/106899147 最小生成树 基本概念和方法 树:没有圈的连通图 ...
- 关于单向TSP旅行商问题/修路问题/最小生成树问题的求解讨论
旅行商问题,又称旅行者,推销员问题,货郎担问题.该问题十分经典,几十年前用于计算机国际竞赛,现在被用来作为算法的入门练习. 假设有一个商人要拜访n个城市,他必须走完所有路径,且路径不能重复,并且走到最 ...
最新文章
- python3下载文件-在Python 3中从Web下载文件
- 高斯判别分析(GDA)和朴素贝叶斯(NB)
- vue怎么传数据给后台_千万日活级产品人必备:数据监控后台之数据指标怎么选?...
- 查看环境变量有无配置成功等命令操作
- 互联网日报 | 华为Mate40系列国内发布;陆金所在纽交所挂牌上市;苹果大中华区营收大降28.6%...
- React Native Styling:样式化的组件,Flexbox布局等
- android double转string_如何使用Java程序将Double转换为String
- DOS各版本下载地址
- DZ先生怪谈国标之视音频文件检索
- Unity-3D游戏开发套件指南(入门篇)-免费资源
- 10uF的电容能滤除什么频率的电源纹波?
- 知物由学 | 垃圾内容肆虐,自监督学习助力“内容风控”效果提升
- 南大金陵学院 计算机,以赛促学,南大金陵学子在全国大学生计算机设计大赛摘得一等奖1项和二等奖4项...
- 2.一个简单的Servlet容器
- oracle数据库恢复aul_AUL6数据恢复总结_20140404
- UCML.NET开发平台 - 产品简介
- ubuntu配置双拼输入法
- Origin软件使用技巧(1),Origin科研绘图2022中文版下载安装
- 世界名校人工智能实验室网址(研究方向)
- 强化学习——值函数与Bellman方程
热门文章
- 【Android 安装包优化】WebP 应用 ( Android 中使用 libwebp.so 库编码 WebP 图片 )
- 【组合数学】鸽巢原理 ( 鸽巢原理简单形式示例 4、5 )
- Vue状态管理之Vuex
- python反转链表和成对反转
- MyBatis传入多个参数的问题
- PHP调试的时候遇到Warning: session_start() [function.session-
- 【有美女看】提升用户体验,你不得不知道的事儿——巧用全屏与沉浸式体验,让用户更舒心~...
- 设置同一Label内涵不同颜色字体
- IOS第三天(@property与@synthesize的用法)
- 分页控件-ASP.NET(AspNetPager)