HDU——1863 畅通工程(最小生成树问题)
原题链接: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 畅通工程(最小生成树问题)相关推荐
- HDU 1863畅通工程(最小生成树)(prim算法)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 1863 畅通工程
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 1863 畅通工程 最小生成树
思路: 比较典型的最小生成树的题目了..在这里用求最小生成树的经典算法K(Kruskal)算法和P(Prim)算法.我的 K 算法用的是结构体来存图,P 算法用的是邻接矩阵来存图,K算法的复杂度是O( ...
- HDOJ 1875 HDU 1875 畅通工程再续 ACM 1875 IN HDU
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1875 ...
- HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- [ACM] hdu 1232 畅通工程(并查集)
Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可以实现交通 ...
- HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)
畅通工程续 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修 ...
- hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...
最新文章
- Xamarin Essentials教程打开文件
- C#——Ellipse(椭圆)类[继承Circle(圆)类][实现IComparable接口、IComparerrT接口]DEMO
- flash 游戏 ui 制作方案
- win10浏览器_[系统] win10浏览器上网问题
- 剑指offer之 旋转数组的最小数字
- 部分编程错误小集-15.04
- 如何判断一颗二叉树为完全二叉树
- 我的《一种前端代码质量检测方法及装置》专利申请
- TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案
- 6月份个人:修改Windows系统多人使用多账号同时远程登陆 并修改脚本自动生成每个用户登录日志。...
- Linux系统负载查询
- ubuntu 13 sogou input method install
- discuz自定义接口开发——一键发帖,自动发帖,站外发帖(主题)
- 计算机毕业设计ssm龙腾集团员工信息管理系统39r5l系统+程序+源码+lw+远程部署
- 小学计算机集体听课评课,小学听课评课活动总结
- 联想拯救者Y9000P和华硕ROG幻16哪个好
- ubuntu系统 新硬盘挂载
- 浅谈计算机应用的认识,浅谈《计算机应用基础》教学
- 必备小工具百度翻译桌面版,瞬时翻译
- tar gz bz xz 解压缩命令