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. COJN 0558 800600带通配符的字符串匹配

    800600带通配符的字符串匹配 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 通配符是一类键盘字符,当我们不知道真正字符或者 ...

  2. Largest Number——LeetCode

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  3. js跨域问题新方案

    只要创建一个空图片. js代码: var data = "http://localhost:8080/test?id="+id+"&content="+ ...

  4. Jenkins 初见

    在网上貌似没有找到Jenkins的中文的太多的文档,有的都是关于Hudson的一些 零零散散的,所以自己边学习边实践总结了以下系列文章,希望有助于大家对于Jenkins的使用. 本系列文章是基于我3年 ...

  5. SCGHR_存储过程(eSP_IDChangeStart)_政治面貌为什么不能正确更新

    1.问题描述:该SP中姓名,工号能够顾正确修改,但是政治面貌不能,为什么? 2.问题定位:那么该SP中其他设置都是正确的,就不要浪费时间看SP的其他设置,错误源就在 政治面貌 这一小块中. 3.修改: ...

  6. Android 开发经验

    学习社区 eoe移动开发者社区 (link) 链接:http://www.eoeandroid.com/ 环境配置 Cocos2d-x 3.x 全平台新手开发配置教程 链接:http://www.co ...

  7. php命令行

    转载(http://blog.jobbole.com/109093/) PHP作为一门web开发语言,通常情况下我们都是在Web Server中运行PHP,使用浏览器访问,因此很少关注其命令行操作以及 ...

  8. iOS 跑马灯 之 TXScrollLabelView

    前言 前段时间在开发一个广播的功能,网上也自己找了一些库,没有发现非常好用的,于是自己抽时间写了一个,在 Github 上发布一天收获六十多个 star,这里首先感谢大家在微博上的转发,使得 TXSc ...

  9. SQL基础--&gt; 约束(CONSTRAINT)

    --============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...

  10. leetCode 26.Remove Duplicates from Sorted Array(删除数组反复点) 解题思路和方法

    Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such that e ...