pta 编程题21 公路村村通
其它pta数据结构编程题请参见:pta
这道题考察最小生成树问题,用的是Prim算法。
和Dijkstra算法相比,没有了collect数组,因为dist[v] == 0就代表v被已收录。
#include <iostream>
using namespace std; int N, M;
int** G;
void buildGraph();
void deleteGraph();
int prim();
int findMinDist(int dist[]); int main()
{
cin >> N >> M;
buildGraph();
cout << prim();
deleteGraph();
return ;
} void buildGraph()
{
int i, j;
G = new int*[N];
for (i = ; i < N; i++)
{
G[i] = new int[N];
for (j = ; j < N; j++)
G[i][j] = INT_MAX;
} int v, w, d;
for (i = ; i < M; i++)
{
cin >> v >> w >> d;
v--; w--;//输入从1计数
G[v][w] = d;
G[w][v] = d;
}
} void deleteGraph()
{
for (int i = ; i < N; i++)
delete[] G[i];
delete[] G;
} int findMinDist(int dist[])
{ /*返回未收录进MST的顶点中dist最小的顶点*/
int minV, v;
int minDist = INT_MAX;
for (v = ; v < N; v++)
{
if (dist[v] != && dist[v] < minDist)
{
minDist = dist[v];
minV = v;
}
}
if (minDist < INT_MAX)
return minV;
return -;
} int prim()
{ /*返回最小生成树的权重*/
int v, w, vCount = ;
int totalWeight = ;
int* dist = new int[N]; /*初始化,初始点下标为0*/
for (v = ; v < N; v++)
dist[v] = G[][v]; /*将0收进最小生成树MST*/
dist[] = ;
vCount++; while (true)
{
v = findMinDist(dist);
if (v == -)
break; totalWeight += dist[v];
dist[v] = ; //收录v
vCount++; for (w = ; w < N; w++)
{
/*如果w没有被收录*/
if (dist[w] != && G[v][w] < dist[w])
{
dist[w] = G[v][w];
}
}
} delete[] dist; if (vCount < N)
return -;
return totalWeight;
}
pta 编程题21 公路村村通的更多相关文章
- PTA 7-1 公路村村通 (30分)
PTA 7-1 公路村村通 (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N ...
- pat06-图6. 公路村村通(30)
06-图6. 公路村村通(30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的 ...
- pta08-图7 公路村村通 (30分)
08-图7 公路村村通 (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N ...
- 7-6 公路村村通(30 分) 【prime】
7-6 公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤10 ...
- ACM程序设计选修课——Problem E:(ds:图)公路村村通(Prim)
问题 E: (ds:图)公路村村通 时间限制: 1 Sec 内存限制: 128 MB 提交: 9 解决: 5 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本, ...
- 7-10 公路村村通(30 分)(最小生成树Prim算法)
7-10 公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1 ...
- PTA 08-图7 公路村村通 (30分)
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数NN(\le 1000≤1000)和候选道 ...
- PAT 7-14 公路村村通
https://pintia.cn/problem-sets/1111189748004499456/problems/1111189831248850957 现有村落间道路的统计数据表中,列出了有可 ...
- pta 编程题20 旅游规划
其它pta数据结构编程题请参见:pta 题目 这个最短路径问题只需要求两点之间的最短路径,因而在Dijikstra算法中当求出目标点的最短路径之后跳出循环即可. #include <iostre ...
随机推荐
- 【关于msyql5.6创建存储过程的一些记录】
-- 秒杀执行存储过程DELETE $$ -- console的结束符号由;转换成 $$-- in输入参数:out:输出参数-- ROW_COUNT():返回上条dml影响的条数: 小于0:sql语句 ...
- 从零开始安装 Ambari (2) -- 准备本地 repository
安装 Ambari,最后是为了用它部署 hadoop 集群.安装时默认使用的是 hortonworks 远程的资源,用它部署集群时,需要下载 Hadoop.Hive.HBase 的安装包,速度很慢.我 ...
- Android OpenGLES2.0(十七)——球形天空盒VR效果实现
在3D游戏中通常都会用到天空盒,在3D引擎中也一般会存在天空盒组件,让开发者可以直接使用.那么天空盒是什么?天空盒又是如何实现的呢?本篇博客主要介绍如何在Android中利用OpenGLES绘制一个天 ...
- ELK系列(5) - Logstash怎么分割字符串并添加新的字段到Elasticsearch
问题 有时候我们想要在Logstash里对收集到的日志等信息进行分割,并且将分割后的字符作为新的字符来index到Elasticsearch里.假定需求如下: Logstash收集到的日志字段mess ...
- ELK系列(2) - Kibana怎么修改日期格式Date format
问题 Kibana在创建Index Patterns的时候,可以选择某个date类型的field作为排序字段.之后在Discover里打开对应的index,会发现这个date类型的field的格式显示 ...
- js index of()用法
含义: indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置.(工作中常用) 提示和注释: 注释:indexOf() 方法对大小写敏感! 注释:如果要检索的字符串值没有出现,则该方 ...
- CBV 与 FBV
FBV:function based view 视图函数,是指之前用的 views.py 中基于函数的开发,url 都是通过函数来实现的,每个 url 对应的函数之间都是独立的. 直接在views.p ...
- 配置文件中取值: spring配置文件中util:properties和context:property-placeholder
转载大神 https://blog.csdn.net/n447194252/article/details/77498916 util:properties和context:property-plac ...
- web.xml中如何设置配置文件的加载路径
web应用程序通过Tomcat等容器启动时,会首先加载web.xml文件,通常我们工程中的各种配置文件,如日志.数据库.spring的文件等都在此时被加载,下面是两种常用的配置文件加载路径,即配置文件 ...
- C# Thread类 线程优先级
1.C#对线程进行操作时,通过Thread类,可以对线程进行创建.挂起.恢复.休眠.终止及设置优先级. Thread类位于System.Threading命名空间下,该命名空间还包含一个ThreadP ...