Description

求出给定无向带权图的最小生成树。图的定点为字符型,权值为不超过100的整形。在提示中已经给出了部分代码,你只需要完善Prim算法即可。

Input

第一行为图的顶点个数n
     第二行为图的边的条数e

     接着e行为依附于一条边的两个顶点和边上的权值

Output

最小生成树中的边。

Sample Input

ABCDEF
A B 6
A C 1
A D 5
B C 5
C D 5
B E 3
E C 6
C F 4
F D 2
E F 6
 
Sample Output
 
(A,C)(C,F)(F,D)(C,B)(B,E)
 
 
#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)的更多相关文章

  1. SWUST OJ 1075 求最小生成树(Prim算法)

    求最小生成树(Prim算法) 我对提示代码做了简要分析,提示代码大致写了以下几个内容 给了几个基础的工具,邻接表记录图的一个的结构体,记录Prim算法中最近的边的结构体,记录目标边的结构体(始末点,值 ...

  2. 最小生成树Prim算法(邻接矩阵和邻接表)

    最小生成树,普利姆算法. 简述算法: 先初始化一棵只有一个顶点的树,以这一顶点开始,找到它的最小权值,将这条边上的令一个顶点添加到树中 再从这棵树中的所有顶点中找到一个最小权值(而且权值的另一顶点不属 ...

  3. 最小生成树—prim算法

    最小生成树prim算法实现 所谓生成树,就是n个点之间连成n-1条边的图形.而最小生成树,就是权值(两点间直线的值)之和的最小值. 首先,要用二维数组记录点和权值.如上图所示无向图: int map[ ...

  4. 图论算法(五)最小生成树Prim算法

    最小生成树\(Prim\)算法 我们通常求最小生成树有两种常见的算法--\(Prim\)和\(Kruskal\)算法,今天先总结最小生成树概念和比较简单的\(Prim\)算法 Part 1:最小生成树 ...

  5. 最小生成树,Prim算法与Kruskal算法,408方向,思路与实现分析

    最小生成树,Prim算法与Kruskal算法,408方向,思路与实现分析 最小生成树,老生常谈了,生活中也总会有各种各样的问题,在这里,我来带你一起分析一下这个算法的思路与实现的方式吧~~ 在考研中呢 ...

  6. 【ACM程序设计】最小生成树 Prim算法

    最小生成树 ● 最小生成树的定义是给定一个无向图,如果它任意两个顶点都联通并且是一棵树,那么我们就称之为生成树(Spanning Tree).如果是带权值的无向图,那么权值之和最小的生成树,我们就称之 ...

  7. 数据结构代码整理(线性表,栈,队列,串,二叉树,图的建立和遍历stl,最小生成树prim算法)。。持续更新中。。。

    //归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 100 ...

  8. Highways POJ-1751 最小生成树 Prim算法

    Highways POJ-1751 最小生成树 Prim算法 题意 有一个N个城市M条路的无向图,给你N个城市的坐标,然后现在该无向图已经有M条边了,问你还需要添加总长为多少的边能使得该无向图连通.输 ...

  9. 最小生成树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind

    最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind 最小支撑树树 前几节中介绍的算法都是针对无权图的,本节将介绍带权图的最小 ...

随机推荐

  1. GDI+画图类Graphics的使用

    一:基础定义 #region 定义线尾.线头为箭头.字体和笔刷 Pen p = );//定义画笔 蓝色,宽度为1(坐标显示颜色) p.EndCap = LineCap.ArrowAnchor;//定义 ...

  2. R学习日记——分解时间序列(非季节性数据)

    分解时间序列,就是将一个时间序列拆分成不同的构成元件.一般序列(非季节性序列)包含一个趋势部分和一个不规则部分(也就是随机部分),而如果是一个季节性序列,除以上两个外,还有季节性部分.   在此,我们 ...

  3. jQuery Ajax 实例 ($.ajax、$.post、$.get)【转载】

    本文转载自:http://jun1986.iteye.com/blog/1399242 Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的 ...

  4. goodAddr

    http://www.tuicool.com/articles/ZV7vya    [tungsten'实时'同步mysql数据到mongodb]

  5. oracle查询和断开用户session

    select sid,serial#,username from v$session where username='user_name';alter system kill session 'sid ...

  6. implode 多维数组转一维数组并字符串输出

    //多维数组返回一维数组,拼接字符串输出 public function r_implode( $glue, $pieces ) { foreach( $pieces as $r_pieces ) { ...

  7. Android BaseAdapter ListView (明星简介列表)

    1.搭建布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" andro ...

  8. java中基于TaskEngine类封装实现定时任务

    主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...

  9. [Javascript] JavaScript Array Methods in Depth - push

    Array push is used to add elements to the end of an Array. In this lesson we'll see how the push met ...

  10. unity3d Find()使用

    1. Hierarchy 创建对象如两个cube时,未修改名称,名称都为cube时. js添加至Camera: private var cubeObj : GameObject; //private ...