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 ...
随机推荐
- vue -- 父子组件间的事件触发
1.父组件触发子组件事件 Parent.vue <child ref="child"></child> <div @click="fn&qu ...
- 飘逸的python - 装饰器的本质
很多人把装饰器搞的很复杂,其实本质很简单. 首先,什么是装饰器呢?在代码中发现戴着@xxx帽子的,就是装饰器. 那要怎么自己定义一个装饰器呢? 其实任何一个接收一个参数的callable都可以用来做装 ...
- 洛谷P1023 税收与补贴问题
P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...
- Git/Bitbucket Workflow
中文 http://blog.jobbole.com/76843/ 英文 https://www.atlassian.com/git/tutorials/comparing-workflows#cen ...
- 洛谷P2025 脑力大人之监听电话
题目描述 话说埃菲尔铁塔小区的房子只有一栋,且只有一层,其中每一家都装有一个监听器,具体地,如果编号为第i家的人给编号第\(j\)家的人打了电话,\(i \leq j\),当然,也会有些人无聊地自己给 ...
- Exadata 12.2.1.1.0 Highlights
突然发现,在中国农历新年的这几年里,Exadata 12.2版本已经发布了. 本起去docs.oracle.com上看看它的新特性,结果发现文档还没有更新: 下面是找到的一些资料,让我们来一睹为快吧: ...
- C# AD 验证登陆
using System.DirectoryServices; using System.DirectoryServices.AccountManagement; using (DirectoryEn ...
- web应用,http协议简介,web框架
一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...
- chapter06
/** * Created by EX-CHENZECHAO001 on 2018-03-30. */class Chapter06 { } // 6 对象// 用对象作为单例或存放工具的方法// 类 ...
- 注意ie6的盒模型
浏览器版本多了,也是一个累,特别是ie家族的. 网上搜罗了一大堆,发现说的和我看到的不一样啊,结果才发现原来是对方表述有问题,省略了几个字就产生了歧义了. 按照网上说的ie6对盒模型解释不符合W3C标 ...