图结构练习——最小生成树(prim算法(普里姆))
图结构练习——最小生成树
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入
输出
示例输入
3 2
1 2 1
1 3 1
1 0
示例输出
2
0 prim代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int map[][];
int m,n;
int prim()
{
int lowcost[];
int f[]={};
int g[];
int i,j,min,k,sum=;
lowcost[]=;
f[]=;
g[]=;
for(i=;i<=m;i++)
{
lowcost[i]=map[][i];
g[i]=;//本语句不可以省略
}
for(i=;i<=m;i++)
{
min=;
for(j=;j<=m;j++)
if(lowcost[j]<=min&&f[j]==)//寻找与已经生成的最小生成树邻接的边的最小权值
{
min=lowcost[j];//min是最小权值
k=j;//k是最小权值边的终端所对应的数组元素的下标
}
printf("%d->%d:%d\n",g[k],k,min);//本语句只是为表现出最小生成树的结构,g数组也是为此而定义,可省略该数组
sum=sum+min;
f[k]=;//表明f[k]元素已经用完,下次再碰到时直接跳过
for(j=;j<=m;j++)//最重要的一步,不解释
{
if(map[k][j]<lowcost[j]&&f[j]==)
{
lowcost[j]=map[k][j];
g[j]=k;
}
}
}
return sum;
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF)
{
int sum=;
int i,j;
for(i=;i<=;i++)
for(j=;j<=;j++)
map[i][j]=;//将map数组中的元素全部置为最大,表示各个节点之间无联系
for(i=;i<=n;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
if(map[u][v]>w)//防止出现输入2 3 3,2 3 4这样的情况,所以要比较求出最小权值
{
map[u][v]=w;
map[v][u]=w;
}
}
sum=prim();
printf("%d\n",sum);
}
}
示例:
输入:
6 10
1 2 6
2 5 3
5 6 6
6 4 2
4 1 5
3 1 1
3 2 5
3 5 6
3 6 4
3 4 5
输出:
15
图结构练习——最小生成树(prim算法(普里姆))的更多相关文章
- 最小生成树 Prim(普里姆)算法和Kruskal(克鲁斯特尔)算法
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (gra ...
- 最小生成树之Prim(普里姆)算法
关于什么是Prim(普里姆算法)? 在实际生活中,我们常常碰到类似这种一类问题:如果要在n个城市之间建立通信联络网, 则连通n个城市仅仅须要n-1条线路.这时.我们须要考虑这样一个问题.怎样在最节省经 ...
- HDU 1879 继续畅通工程 (Prim(普里姆算法)+Kruskal(克鲁斯卡尔))
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 数据结构之---C语言实现最小生成树之prim(普里姆)算法
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- 图结构练习——最小生成树(kruskal算法(克鲁斯卡尔))
图结构练习——最小生成树 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 有n个城市,其中有些城市之间可以修建公路,修建不同的公 ...
- (原创)最小生成树之Prim(普里姆)算法+代码详解,最懂你的讲解
Prim算法 (哈欠)在创建最小生成树之前,让我们回忆一下什么是最小生成树.最小生成树即在一个待权值的图(即网结构)中用一个七拐八绕的折线串连起所有的点,最小嘛,顾名思义,要权值相加起来最小,你当然可 ...
- p1221网络布线(最小生成树 Prim(普里母)算法) p1222 Watering Hole
描述 Description 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助.约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路 ...
- 最小生成树——Prim(普利姆)算法
[0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解Prim算法的idea 并用 源代码加以实现: 0.2)最小生成树的基础知识,参见 http://blog. ...
- POJ-3026(图上的最小生成树+prim算法+gets函数使用)
Borg Maze POJ-3026 一开始看到这题是没有思路的,看了题解才知道和最小生成树有关系. 题目的意思是每次走到一个A或者S就可以分为多个部分继续进行搜索.这里就可以看出是从该点分出去的不同 ...
随机推荐
- (原)android中的动画(三)之动画监听&页面切换动画
1.动画也可以设置监听事件,例如在动画结束时需要执行某操作 把要执行的代码写在onAnimationEnd()回调方法中即可: anim.setAnimationListener(new Animat ...
- hdu1455 dfs+剪枝
Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- centos 谷歌浏览器安装
首先,这个是坑 http://www.tecmint.com/install-google-chrome-on-redhat-centos-fedora-linux/ 安装会报错,按照错误找到以下资源 ...
- Java中流的概念
http://wapwenku.baidu.com/view/04714847b307e87101f69656.html?ssid=0&from=1086k&uid=0&pu= ...
- php之aop实践
aop简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能 ...
- Delphi XE5 常见问题解答
Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易 ...
- MySQL进程常见的State【转】
为了查阅方便,做个笔记. 通过show processlist查看MySQL的进程状态,在State列上面的状态有如下这些: Analyzing线程对MyISAM 表的统计信息做分析(例如, ANAL ...
- Divide and Conquer:River Hopscotch(POJ 3258)
去掉石头 题目大意:一群牛在河上的石头上跳来跳去,现在问你如何通过去掉M个石头,使得牛跳过石头的最短距离变得最大? 这一题比较经典,分治法的经典,二分法可以很方便处理这个问题,我们只要明白比较函数这 ...
- java classpath批量设置shell脚本
java classpath批量设置shell脚本 注意:linux bash jar文件之间的分隔符是':' export JAR_HOME=path to directory which ...
- 【python】入门学习(九)
面向对象编程 class 定义类,类的值可以修改 _ _init_ _(self) 初始化函数,创建类时自动调用 self 指向对象本身,可以用其他的名字 但不建议 #person.py class ...