HDU 1102 Constructing Roads(prim求最小生成树)
来源:互联网 发布:跑腿软件哪个好 编辑:程序博客网 时间:2024/05/16 12:56
题意:
给出各个点的之间的距离,用最少的路将这些点连通起来。
思路:题目其实就是求最小生成树,我用了prim。那些已经连通的点将距离设置为0。
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<queue>#include<cstring>using namespace std;const int N=105;#define inf 0x3f3f3f3fint ma[N][N],vis[N],dis[N],cost;int n;void prim(){for(int i=1;i<=n;i++){dis[i]=ma[1][i];vis[i]=0;}dis[1]=0;vis[1]=1;for(int i=1;i<=n;i++){int mi=inf,mb=0;for(int j=1;j<=n;j++){if(!vis[j]&&dis[j]<mi){mi=dis[j];mb=j;}}if(mi==inf) break;vis[mb]=1;cost+=dis[mb];for(int i=1;i<=n;i++){if(!vis[i]&&ma[mb][i]<dis[i]){dis[i]=ma[mb][i];}}}}int main(){while(scanf("%d",&n)!=EOF){cost=0;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&ma[i][j]);int Q;scanf("%d",&Q); for(int i=0;i<Q;i++){int a,b;scanf("%d%d",&a,&b);ma[a][b]=ma[b][a]=0;}prim();cout<<cost<<endl;}return 0;}
阅读全文
0 0
- HDU 1102 Constructing Roads(Prim求最小生成树)
- HDU 1102 Constructing Roads(prim求最小生成树)
- HDU - 1102 - Constructing Roads (最小生成树--prim算法!!)
- HDU-1102 Constructing Roads(最小生成树[Prim])
- HDU 1102 Constructing Roads(最小生成树-Prim)
- hdu 1102 Constructing Roads(最小生成树,prim)
- HDU 1102 Constructing Roads (最小生成树 Prim算法)
- hdu1102 - Constructing Roads (求最小生成树) (Prim & Kruskal)
- hdu 1102 Constructing Roads(Prim最小生成树)
- 【最小生成树+Prim】杭电 hdu 1102 Constructing Roads
- hdu-1102 Constructing Roads(prim最小生成树)
- hdu 1102 Constructing Roads(最小生成树 Prim)
- hdu 1102 Constructing Roads(最小生成树prim)
- hdu 1102 Constructing Roads 最小生成树prim模板题
- HDOJ题目1102Constructing Roads(最小生成树,prim)
- HDU 1102 Constructing Roads(Kruskal最小生成树求最小花费)
- hdu 1102 Constructing Roads 最小生成树
- Constructing Roads - HDU 1102 最小生成树
- EasyMall第八天
- JavaScript关于表单脚本的一些实用技巧
- CodeForces 50 A.Domino piling(水~)
- EasyMall第九天
- 2017年9月1日23:11:33
- HDU 1102 Constructing Roads(prim求最小生成树)
- Ubuntu uninstalling software completely(include purge configuration and files)
- [HDU]1520 Anniversary party
- JS直接修改CSS属性/id属性/class属性
- 基于同步器的合并接口实现
- 多线程编程1——基础知识
- EasyMall第十天
- druid 查询接口的使用
- PyCharm激活