原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863

题意:有m个村庄,还给出了n条道路的具体信息。问你能否使m个村庄畅通,且最小花费是多少?

解题思路:这道题关键是在于最小花费,即求生成树的最小权值之和。也就是求最小生成树,由于数据量比较小,我们使用Prim算法或Kruskal算法都行,我这里使用的是Prim算法。

AC代码

/*
*邮箱:unique_powerhouse@qq.com
*blog:https://me.csdn.net/hzf0701
*注:文章若有任何问题请私信我或评论区留言,谢谢支持。
*
*/
#include<bits/stdc++.h> //POJ不支持#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增
#define per(i,a,n) for (int i=a;i>=n;i--)//i为循环变量, a为初始值,n为界限值,递减。
#define pb push_back
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define fi first
#define se second
#define mp make_pairusing namespace std;const int inf = 0x3f3f3f3f;//无穷大
const int maxn = 1e2+2;//最大值。
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll>  pll;
typedef pair<int, int> pii;
//*******************************分割线,以上为自定义代码模板***************************************//int n,m;//n条道路,m个村庄。
int graph[maxn][maxn];
int lowcost[maxn];//最小代价。
int cnt;//统计有多少个点加入了。
void Prim(){//我们默认从1开始。rep(i,1,m){if(i==1)lowcost[i]=0;else lowcost[i]=graph[1][i];}int minn,pos,sum=0;cnt=1;rep(i,2,m){minn=inf;rep(j,1,m){if(lowcost[j]!=0&&lowcost[j]<minn){minn=lowcost[j];pos=j;}}if(minn==inf)break;sum+=minn;cnt++;lowcost[pos]=0;//合并。rep(j,2,m){//更新。if(lowcost[j]!=0&&lowcost[j]>graph[pos][j]){lowcost[j]=graph[pos][j];}}}if(cnt==m){cout<<sum<<endl;}elsecout<<"?"<<endl;
}
int main(){//freopen("in.txt", "r", stdin);//提交的时候要注释掉IOS;while(cin>>n>>m&&n){memset(graph,inf,sizeof(graph));int u,v,w;while(n--){cin>>u>>v>>w;graph[u][v]=graph[v][u]=w;}Prim();}return 0;
}

HDU——1863 畅通工程(最小生成树问题)相关推荐

  1. HDU 1863畅通工程(最小生成树)(prim算法)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. HDU 1863 畅通工程

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. HDU 1863 畅通工程 最小生成树

    思路: 比较典型的最小生成树的题目了..在这里用求最小生成树的经典算法K(Kruskal)算法和P(Prim)算法.我的 K 算法用的是结构体来存图,P 算法用的是邻接矩阵来存图,K算法的复杂度是O( ...

  4. HDOJ 1875 HDU 1875 畅通工程再续 ACM 1875 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1875 ...

  5. HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...

  6. HDU 1875 畅通工程再续 (最小生成树)

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. [ACM] hdu 1232 畅通工程(并查集)

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...

  8. HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)

    畅通工程续 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修 ...

  9. hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...

最新文章

  1. Xamarin Essentials教程打开文件
  2. C#——Ellipse(椭圆)类[继承Circle(圆)类][实现IComparable接口、IComparerrT接口]DEMO
  3. flash 游戏 ui 制作方案
  4. win10浏览器_[系统] win10浏览器上网问题
  5. 剑指offer之 旋转数组的最小数字
  6. 部分编程错误小集-15.04
  7. 如何判断一颗二叉树为完全二叉树
  8. 我的《一种前端代码质量检测方法及装置》专利申请
  9. TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案
  10. 6月份个人:修改Windows系统多人使用多账号同时远程登陆 并修改脚本自动生成每个用户登录日志。...
  11. Linux系统负载查询
  12. ubuntu 13 sogou input method install
  13. discuz自定义接口开发——一键发帖,自动发帖,站外发帖(主题)
  14. 计算机毕业设计ssm龙腾集团员工信息管理系统39r5l系统+程序+源码+lw+远程部署
  15. 小学计算机集体听课评课,小学听课评课活动总结
  16. 联想拯救者Y9000P和华硕ROG幻16哪个好
  17. ubuntu系统 新硬盘挂载
  18. 浅谈计算机应用的认识,浅谈《计算机应用基础》教学
  19. 必备小工具百度翻译桌面版,瞬时翻译
  20. tar gz bz xz 解压缩命令

热门文章

  1. Spring优雅停机
  2. NumPy 初学者指南中文第三版:1~5
  3. 代码随想录算法训练营第七天|454、四数相加Ⅱ 383、赎金信15、三数之和18、四数之和
  4. VS2010 MFC工程中 错误提示: IntelliSense: 无法打开源文件 defines.h
  5. 隐私安全保护:用技术守护个人信息的安全
  6. POI-Excel表格生成速度优化
  7. 惯性测量单元IMU基础
  8. ScaleType属性
  9. 如何测试端口通不通(四种方法)
  10. TurboMail防黑客入侵邮件系统骗取货款