其它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 公路村村通的更多相关文章

  1. PTA 7-1 公路村村通 (30分)

    PTA 7-1 公路村村通 (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N ...

  2. pat06-图6. 公路村村通(30)

    06-图6. 公路村村通(30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的 ...

  3. pta08-图7 公路村村通 (30分)

    08-图7 公路村村通   (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N ...

  4. 7-6 公路村村通(30 分) 【prime】

    7-6 公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤10 ...

  5. ACM程序设计选修课——Problem E:(ds:图)公路村村通(Prim)

    问题 E: (ds:图)公路村村通 时间限制: 1 Sec  内存限制: 128 MB 提交: 9  解决: 5 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本, ...

  6. 7-10 公路村村通(30 分)(最小生成树Prim算法)

    7-10 公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1 ...

  7. PTA 08-图7 公路村村通 (30分)

    现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数NN(\le 1000≤1000)和候选道 ...

  8. PAT 7-14 公路村村通

    https://pintia.cn/problem-sets/1111189748004499456/problems/1111189831248850957 现有村落间道路的统计数据表中,列出了有可 ...

  9. pta 编程题20 旅游规划

    其它pta数据结构编程题请参见:pta 题目 这个最短路径问题只需要求两点之间的最短路径,因而在Dijikstra算法中当求出目标点的最短路径之后跳出循环即可. #include <iostre ...

随机推荐

  1. 理解linux服务器mcelog如何工作

    What are Machine Check Exceptions (or MCE)? A machine check exception is an error dedected by your s ...

  2. c#桌面应用程序--窗体重复创建问题

    重复创建窗体问题的引出 连续单击添加窗体按钮,通过普通的在按钮事件方法中创建窗体,显示窗体的后果是,我们会发现,相同的窗体会重复不断的弹出.代码如下: //添加窗口事件方法 private void ...

  3. Educational Codeforces Round 57D(DP,思维)

    #include<bits/stdc++.h>using namespace std;char s[100007];long long a[100007];long long dp[100 ...

  4. 《OD玩阿里云》搭建环境

    一.安装mysql 1. 解决乱码问题 http://www.ha97.com/5359.html http://blog.csdn.net/qiyuexuelang/article/details/ ...

  5. hdu 1729 Stone Game

    Stone Game HDU - 1729 题意: 给定n个箱子,每个箱子的容量为si,每个箱子里最初有ci个石子,每次放入石子不能超过放入前的石子数的平方,谁无法继续放入石子就算输.   /* 这是 ...

  6. 在 .NET Framework 中使用 StringBuilder 类

    在 .NET Framework 中使用 StringBuilder 类 String 对象是不可变的.每次使用 System.String 类中的一个方法时,都要在内存中创建一个新的字符串对象,这就 ...

  7. [题解](排列组合)luogu_P3223排队

    把老师和女生插到男生中间,先对男生排列:A(n,n),然后把老师插到n+1个空里:A(n+1,2),然后放入女生:A(n+3,m) 但是少考虑了老师之间由1个女生分开的情况,所以把三个人看作一个整体, ...

  8. $.store.book[?(@.title =~ /^.*Honour.*$/i)]

    { "store": { "book": [ { "category": "reference", "auth ...

  9. rem字体在rem盒子里面不一样,或者不同的行解决

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Luogu P2183 [国家集训队]礼物 扩展卢卡斯+组合数

    好吧学长说是板子...学了之后才发现就是板子qwq 题意:求$ C_n^{w_1}*C_{n-w_1}^{w_2}*C_{n-w_1-w_2}^{w_3}*...\space mod \space P ...