求最小生成树(Prim算法)(1075)
Description
求出给定无向带权图的最小生成树。图的定点为字符型,权值为不超过100的整形。在提示中已经给出了部分代码,你只需要完善Prim算法即可。
Input
第一行为图的顶点个数n
第二行为图的边的条数e
接着e行为依附于一条边的两个顶点和边上的权值
Output
最小生成树中的边。
Sample Input
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std; typedef struct
{
int n;
int e;
char data[];
int edge[][];
}Graph; typedef struct
{
int index;
int cost;
}mincost; typedef struct
{
int x;
int y;
int weight;
}EDGE; typedef struct
{
int index;
int flag;
}F; void create(Graph &G, int n, int e)
{
int i, j, k, w;
char a, b;
for (i = ; i< n; i++)
cin >> G.data[i];
for (i = ; i< n; i++)
for (j = ; j< n; j++)
{
if (i == j)
G.edge[i][j] = ;
else
G.edge[i][j] = ;
} for (k = ; k< e; k++)
{
cin >> a;
cin >> b;
cin >> w;
for (i = ; i< n; i++)
if (G.data[i] == a) break;
for (j = ; j< n; j++)
if (G.data[j] == b) break; G.edge[i][j] = w;
G.edge[j][i] = w;
}
G.n = n;
G.e = e;
}
#define inf 32767
void Prim(Graph &G, int v)
{
int lowcost[];
int min, closest[], i, j, k;
for (i = ; i < G.n; i++)
{
lowcost[i] = G.edge[v][i];
closest[i] = v;
}
for (i = ; i < G.n; i++)
{
min = inf;
for (j = ; j < G.n; j++)
{
if (lowcost[j] && lowcost[j] < min)
{
min = lowcost[j];
k = j;
}
}
cout << '(' << G.data[closest[k]] << ',' << G.data[k] << ')';
lowcost[k] = ;
for (j = ; j < G.n; j++)
if (G.edge[k][j] && G.edge[k][j] < lowcost[j])
{
lowcost[j] = G.edge[k][j];
closest[j] = k;
}
}
} int main()
{
Graph my;
int n, e;
cin >> n >> e;
create(my, n, e);
Prim(my, );
return ;
}
求最小生成树(Prim算法)(1075)的更多相关文章
- SWUST OJ 1075 求最小生成树(Prim算法)
求最小生成树(Prim算法) 我对提示代码做了简要分析,提示代码大致写了以下几个内容 给了几个基础的工具,邻接表记录图的一个的结构体,记录Prim算法中最近的边的结构体,记录目标边的结构体(始末点,值 ...
- 最小生成树Prim算法(邻接矩阵和邻接表)
最小生成树,普利姆算法. 简述算法: 先初始化一棵只有一个顶点的树,以这一顶点开始,找到它的最小权值,将这条边上的令一个顶点添加到树中 再从这棵树中的所有顶点中找到一个最小权值(而且权值的另一顶点不属 ...
- 最小生成树—prim算法
最小生成树prim算法实现 所谓生成树,就是n个点之间连成n-1条边的图形.而最小生成树,就是权值(两点间直线的值)之和的最小值. 首先,要用二维数组记录点和权值.如上图所示无向图: int map[ ...
- 图论算法(五)最小生成树Prim算法
最小生成树\(Prim\)算法 我们通常求最小生成树有两种常见的算法--\(Prim\)和\(Kruskal\)算法,今天先总结最小生成树概念和比较简单的\(Prim\)算法 Part 1:最小生成树 ...
- 最小生成树,Prim算法与Kruskal算法,408方向,思路与实现分析
最小生成树,Prim算法与Kruskal算法,408方向,思路与实现分析 最小生成树,老生常谈了,生活中也总会有各种各样的问题,在这里,我来带你一起分析一下这个算法的思路与实现的方式吧~~ 在考研中呢 ...
- 【ACM程序设计】最小生成树 Prim算法
最小生成树 ● 最小生成树的定义是给定一个无向图,如果它任意两个顶点都联通并且是一棵树,那么我们就称之为生成树(Spanning Tree).如果是带权值的无向图,那么权值之和最小的生成树,我们就称之 ...
- 数据结构代码整理(线性表,栈,队列,串,二叉树,图的建立和遍历stl,最小生成树prim算法)。。持续更新中。。。
//归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 100 ...
- Highways POJ-1751 最小生成树 Prim算法
Highways POJ-1751 最小生成树 Prim算法 题意 有一个N个城市M条路的无向图,给你N个城市的坐标,然后现在该无向图已经有M条边了,问你还需要添加总长为多少的边能使得该无向图连通.输 ...
- 最小生成树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind
最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind 最小支撑树树 前几节中介绍的算法都是针对无权图的,本节将介绍带权图的最小 ...
随机推荐
- 调侃Cookie
近期看着某些小朋友那琢急的学习心态,瞬间发文一篇,谨此以助小朋友早日有成! 闲话不扯远,实话见真言,晃悠许久觉得开头还是谈谈Cookie这只菜篮,而且是一只私家菜篮,为啥说它是一只菜篮呢,各位看官必定 ...
- 【索引】XBox360玩机心得
基础知识 查看XBox360的系统版本信息:http://www.cnblogs.com/duxiuxing/p/4292140.html XBox360光盘游戏的安装: 自制系统 XBox360自制 ...
- Android新浪微博客户端(七)——ListView中的图片异步加载、缓存
原文出自:方杰|http://fangjie.info/?p=193转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代码已经放到git ...
- Shell遍历文件的每一行
由于使用for来读入文件里的行时,会自动把空格和换行符作为一样分隔符,因为当行里有空格的时候,输出的结果会很乱,所以…… cat input.txt |while read line> do&g ...
- Java语言与JVM中的Lambda表达式全解
Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法. ...
- js跨域问题新方案
只要创建一个空图片. js代码: var data = "http://localhost:8080/test?id="+id+"&content="+ ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- python_Opencv_读取视频
目标 • 学会读取视频文件,显示视频,保存视频文件 • 学会从摄像头获取并显示视频 • 你将会学习到这些函数:cv2.VideoCapture(),cv2.VideoWrite()用摄像头捕获视频 使 ...
- [RxJS] Returning subscriptions from the subscribe function
So far, when writing these subscribe functions, we haven't returned anything. It is possible return ...
- unity3d优化IOS
1. using UnityEngine; class GarbageCollectManager : MonoBehaviour { public int frameFreq = 30; ...