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条线路.这时 ...
随机推荐
- 洛谷P3246 [HNOI2016]序列 [莫队]
传送门 思路 看到可离线.无修改.区间询问,相信一定可以想到莫队. 然而,莫队怎么转移是个大问题. 考虑\([l,r]\rightarrow[l,r+1]\)时答案会怎样变化?(左端点变化时同理) \ ...
- Oracle_plsql_开发工具搭建最小化客户端
一:资源下载获取路径: 二:配置方法 1:前提是安装好plsql开发工具 具体安装步骤略 2:配置 简化版的客户端工具. 具体格式:可以参照下文来修改编写使用. orcl_1521 = (DESCRI ...
- Confluence 6 如何备份和恢复
如何备份 有关备份你数据库使用的命令与你使用的具体数据库有关,例如针对 PostgreSQL 数据库,备份命令为 pg_dump dbname > outfile. 你应该针对你使用的数据库不同 ...
- Confluence 6 MySQL 创建数据库和数据库用户
一旦你成功的安装和配置了 MySQL 数据库服务器,你需要为你的 Confluence 创建数据库和数据库用户: 在 MySQL 中以超级用户运行 'mysql' .默认的用户为 'root' 同时密 ...
- JPA核心类与使用
点击访问:JPA环境配置(一) Persistence: Persistence用于获取EntityManagerFactory实例,这个类中包含一个名为createEntityManagerFact ...
- 调皮的HR
如图:笔试题 # -*- coding: utf- -*- """ Created on Thu Apr :: @author: weilong "" ...
- Solver Of Caffe
本文旨在解决如何编写solver文件. Solver的流程: 1. 设计好需要优化的对象,以及用于学习的训练网络和用于评估的测试网络.(通过调用另外一个配置文件prototxt来进行) 2. ...
- requests中get和post传参
get请求 get(url, params=None, **kwargs) requests实现get请求传参的两种方式 方式一: import requests url = 'http://www. ...
- 使用Calendar获取上一月,下一月,上一年,下一年的当天日期
Calendar的add(int field,int amount)方法 field 表示月或年,天等字段 amount 代表增量或减量 例如: 上月的当天日期 Calendar cal = Cal ...
- HBase describe table 参数说明
创建user表 > create 'dimensoft:user', 'info' 查看表结构 > describe 'dimensoft:user' DESCRIPTION 'dimen ...