UVALive 6437 Power Plant(最小生成树)
来源:互联网 发布:常见的nosql数据库 编辑:程序博客网 时间:2024/06/06 20:50
UVALive 6437 Power Plant (题目链接)
题意:给定n个点,其中有k个发电站,m条有权边。要求所有的点都与发电站联通,求权重之和最小为多少。
思路:最小生成树,Prim算法初始选点时将发电站都选进去,Kruskal算法初始时把发电站都并到一起。
Prim算法代码:
/************************************************************************* File Name: D.cpp ID: obsolescence BLOG: http://blog.csdn.net/obsolescence LANG: C++ Mail: 384099319@qq.com Created Time: 2016年07月27日 星期三 13时41分52秒 ************************************************************************/#include<bits/stdc++.h>#define Max(x,y) ((x)>(y)?(x):(y))#define Min(x,y) ((x)<(y)?(x):(y))#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();++it)#define Abs(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))#define ll long long#define Mem0(x) memset(x,0,sizeof(x))#define Mem1(x) memset(x,-1,sizeof(x))#define MemX(x) memset(x,0x3f,sizeof(x))#define pb push_backusing namespace std;const int N=210,INF=0x3f3f3f3f;bool vis[N];int g[N][N],n,m,d[N];void Prim(){ Mem0(vis); int i,j,sum=0; for(i=1;i<=n;++i){ int a=-1,minn=INF; for(j=1;j<=n;++j) if(!vis[j] && d[j]<minn) a=j,minn=d[j]; if(a==-1)break; vis[a]=1; sum+=minn; for(j=1;j<=n;++j) if(g[a][j] && !vis[j] && g[a][j]<d[j])d[j]=g[a][j]; } printf("%d\n",sum);}int main(){ int t,nc,x,i,k,y,v; while(~scanf("%d",&t)){ nc=0; while(t--){ Mem0(g),MemX(d); scanf("%d%d%d",&n,&m,&k); while(k--){ scanf("%d",&x); d[x]=0; } for(i=0;i<m;++i){ scanf("%d%d%d",&x,&y,&v); g[x][y]=g[y][x]=v; } printf("Case #%d: ",++nc); Prim(); } }}
0 0
- UVALive 6437 Power Plant(最小生成树)
- uva 6437 - Power Plant【最小生成树】
- Uva 6437 - Power Plant 裸最小生成树
- LA 6437 Power Plant (prim最小生成树)
- UVA Live 6437 Power Plant 最小生成树
- UVALive 6837 (最小生成树)
- 曼哈顿最小距离生成树(poj 3241&& UVALive 3662)
- UVAlive 6622 Absurdistan Roads(最小生成树+LCA)
- [最小割] Codeforces 434D. Nanami's Power Plant
- UVALive - 7303 Aquarium(最小生成树)
- UVALive 7303Aquarium 最小生成树
- uva6437 Power Plant
- 【UVALive】3887 Slim Span 枚举+最小生成树
- UVALive 3662 Another Minimum Spanning Tree 曼哈顿最小生成树
- Another Minimum Spanning Tree - UVaLive 3662 曼哈顿最小生成树
- UVALive - 4848 Tour Belt(暴力+最小生成树)
- UVALive-7303- Aquarium【最小生成树】【连通块】
- UVALive 6807(最大生成树)
- mybatis: Invalid bound statement (not found)
- Unity粒子系统简介
- Spring MVC的自定义拦截器(登录)
- 【leetcode】144. Binary Tree Preorder Traversal
- ecshop二次开发手册【基本结构】
- UVALive 6437 Power Plant(最小生成树)
- bootstrap 响应式实用工具
- iOS中modal跳转总结
- 解决secureCRT7.3小键盘在vim编辑器里不能使用问题
- Java面向对象的三大特征------封装
- 如何学好游戏3D引擎编程
- hdu1532 当前弧优化的dinic算法实现
- 利用MySQL排序将树结构表数据封装成树结构对象(三)
- sybase中插入多条数据