poj-1287 Networking(Prim)
题目链接:http://poj.org/problem?id=1287
题目描述:
请先参考关于prim算法求最小生成树的讲解博客:https://www.cnblogs.com/LJHAHA/p/10051069.html
代码实现:
- #include<iostream>
- #include<cstdio>
- using namespace std;
- #define MAX 100
- #define MAXCOST 0x7fffffff
- int graph[MAX][MAX];
- int prim(int graph[][MAX], int n)
- {
- int lowcost[MAX];//lowcost[i]:表示以i为终点的边的最小权值,注意i的起点并不确定
- int mst[MAX];//mst[i]:表示对应lowcost[i]的起点
- int i, j, min, minid, sum = ;
- //我们设V1是起点,进行初始化
- for (i = ; i <= n; i++)
- {
- lowcost[i] = graph[][i];//如果该顶点未与V1相连,lowcost值为MAXCOST
- mst[i] = ;//刚开始的时候,对于每一个Vi来说,它的起点都是V1
- }
- mst[] = ;//当mst[i]=0表示起点i加入MST
- for (i = ; i <= n; i++)//执行n-1次,保证V1到达每个顶点的最短边都能够找到
- {
- min = MAXCOST;
- minid = ;//起点Vi到顶点minid的边最短
- for (j = ; j <= n; j++)//找出最短的边,用minid记录下该顶点,用min存下最短边
- {
- if (lowcost[j] < min && lowcost[j] != )
- {
- min = lowcost[j];
- minid = j;
- }
- }
- sum += min;//每找出一条最短边就加到权值中去
- lowcost[minid] = ;//当lowcost[i]=0说明以i为终点的边的最小权值=0,也就是表示i点加入了MST
- for (j = ; j <= n; j++)
- {
- if (graph[minid][j] < lowcost[j])
- {
- lowcost[j] = graph[minid][j];
- mst[j] = minid;
- }
- }
- }
- return sum;
- }
- int main()
- {
- int i, j, k, m, n;
- int x, y, cost;
- while(scanf("%d%d",&m,&n)){
- if(m==)
- break;
- //初始化图G
- for (i = ; i <= m; i++)
- {
- for (j = ; j <= m; j++)
- {
- graph[i][j] = MAXCOST;
- }
- }
- //构建图G
- for (k = ; k <= n; k++)
- {
- cin >> i >> j >> cost;
- if(cost<graph[i][j]){
- graph[i][j] = cost;
- graph[j][i] = cost;
- }
- }
- //求解最小生成树
- cost = prim(graph, m);
- //输出最小权值和
- cout <<cost << endl;
- }
- return ;
- }
poj-1287 Networking(Prim)的更多相关文章
- POJ 1287 Networking (最小生成树)
Networking 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/B Description You are assigned ...
- POJ 1287 Networking(最小生成树)
题意 给你n个点 m条边 求最小生成树的权 这是最裸的最小生成树了 #include<cstdio> #include<cstring> #include<algor ...
- POJ 1287 Networking(最小生成树裸题有重边)
Description You are assigned to design network connections between certain points in a wide area. Yo ...
- POJ 1258 Agri-Net(Prim)
( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cmath> #include<algori ...
- POJ - 1287 Networking (最小生成树&并查集
You are assigned to design network connections between certain points in a wide area. You are given ...
- POJ.1287 Networking (Prim)
POJ.1287 Networking (Prim) 题意分析 可能有重边,注意选择最小的边. 编号依旧从1开始. 直接跑prim即可. 代码总览 #include <cstdio> #i ...
- POJ 2431 Expedition(探险)
POJ 2431 Expedition(探险) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] A group of co ...
- ZOJ1372 POJ 1287 Networking 网络设计 Kruskal算法
题目链接:problemCode=1372">ZOJ1372 POJ 1287 Networking 网络设计 Networking Time Limit: 2 Seconds ...
- c/c++ 用普利姆(prim)算法构造最小生成树
c/c++ 用普利姆(prim)算法构造最小生成树 最小生成树(Minimum Cost Spanning Tree)的概念: 假设要在n个城市之间建立公路,则连通n个城市只需要n-1条线路.这时 ...
随机推荐
- IBM X 3650 M3服务器RAID0设置
1 进入磁盘整列设置窗口 1.1 开机在提示符页面下按[F1]进入BIOS设置 1.2 依次进入子菜单[System Settings]à[Adapters and UEFI Drivers] 1.3 ...
- nginx+php负载均衡集群环境中的session共享方案梳理
在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...
- LeetCode(75):分类颜色
Medium! 题目描述: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 ...
- 新增 修改,对xx名字或者其他属性做校验判断是否存在
需求描述:页面输入完xxName和xx编码,点击提交,根据两项内容做重复校验(就是看看数据库里有木有相同的) 解决思路:把这两个东西作为查询条件去查,查到有记录,提示已存在,就不执行新增或者修改操作. ...
- hdu1540 区间合并+询问某点的最大连续块
询问操作需要搞一下 今天被区间合并降智了 /* D a: 摧毁第a个点 Q a:询问a所在的点的块大小 R :修复最后被破坏的点 对于所有的点需要进行一次更新 更新比较容易,tag用来表示区间是否是完 ...
- 最小标示法模板 poj1509
最小标示法:给定一个字符串,不断将其最后一个字符放到开头,最终会得到n个字符串,称这n个字符串循环同构,这些字符串中字典序最小的一个,就是最小表示法 #include<iostream> ...
- 解决linux下svn update 产生Node remains in conflict的问题
提交一个文件 服务器上死活更新不了 是因为有冲突,解决办法:svn revert --depth=infinity /var/SvnProject/APITest 再次执行更新 进有改动的文件夹,更新 ...
- Nginx详解五:Nginx基础篇之HTTP请求
http请求 如今的http请求已经不是每一次请求都进行一次三次握手,可以在请求与相应之后,客户端和服务端不断的发送FIN和ACK包来保持连接的状态,即:长连接 HTTP请求建立在一次TCP连接基础上 ...
- Java和C冒泡排序
Java 示例代码: public class test { public static void main(String[] args) { String str = "321dca5&q ...
- paython3-练习
在文本每行末尾加; f = open(r'D:\test1\1.txt','rb') w = open(r'D:\test1\2.txt','wb') for line in f.readlines( ...