*【bzoj 1601】灌水(最小生成树)
来源:互联网 发布:趋势操盘软件 编辑:程序博客网 时间:2024/06/06 00:50
传送门biu~
建一个虚拟0号节点,0号节点到各个节点的权为在这个节点建造水库的花费,显然跑一遍最小生成树就是灌水的最小代价。
#include<bits/stdc++.h>#define N 305using namespace std;int n,ans;int father[N],num;int search(int x){return father[x]==x?x:father[x]=search(father[x]);}struct edge{ int x,y,len;}a[N*N];int tp;bool cmp(edge a,edge b){return a.len<b.len;}int main(){ scanf("%d",&n); for(int i=0;i<=n;++i) father[i]=i; for(int i=1;i<=n;++i){ int x; scanf("%d",&x); ++tp;a[tp].x=0;a[tp].y=i;a[tp].len=x; } for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ int x; scanf("%d",&x); if(i<j){ ++tp;a[tp].x=i;a[tp].y=j;a[tp].len=x; } } } sort(a+1,a+tp+1,cmp); for(int i=1;i<=tp;++i){ int xn=search(a[i].x); int yn=search(a[i].y); if(xn!=yn){ father[xn]=yn; ++num;ans+=a[i].len; if(num==n) break; } } printf("%d",ans); return 0;}
阅读全文
0 0
- *【bzoj 1601】灌水(最小生成树)
- [BZOJ]1601 灌水 最小生成树
- bzoj 1601: [Usaco2008 Oct]灌水 (最小生成树)
- bzoj 1601: [Usaco2008 Oct]灌水(最小生成树)
- bzoj 1601: [Usaco2008 Oct]灌水 最小生成树
- BZOJ 1601 [Usaco2008 Oct]灌水(最小生成树)
- 【BzoJ 1601】【灌水】【最小生成树】【贪心决策】【并查集】
- 【bzoj1601】灌水 最小生成树
- water 灌水问题(最小生成树 搜索)
- [Usaco2008 Oct]灌水 最小生成树
- 【BZOJ1601】[Usaco2008 Oct]灌水【最小生成树】
- 【bzoj1601】【uscao2008 oct】【灌水】【最小生成树】
- 【bzoj1601】【Usaco2008 Oct】灌水 (最小生成树) 题解&代码
- [bzoj1601]: [Usaco2008 Oct]灌水牧场行走 最小生成树
- bzoj 1601 最小生成树经典题
- BZOJ 2561: 最小生成树(最小割)
- bzoj 2521: [Shoi2010]最小生成树(最小割)
- BZOJ 1601 [Usaco2008 Oct]灌水
- c++笔记:(2)
- 笔记
- 10.2 test solution.
- 复习
- Angular
- *【bzoj 1601】灌水(最小生成树)
- 移动WEBAPP 常规CSS样式总结
- Codeforces Round #434 题解
- 《着色器和屏幕特效》读书笔记第一章-创建一个着色器
- JavaWeb监听器学习笔记
- 数据结构---04-树7 二叉搜索树的操作集(30 分)
- leetcode之Add Two Numbers 在VS上面提交通过,放到网站上提交有问题;
- 双节快乐
- QBXT DAY 2 笔记