usaco oct09 Watering Hole
Farmer John希望把水源引入他的N (1 <= N <= 300) 个牧场,牧场的编号是1~N.他将水源引入某个牧场的方法有两个,一个是在牧场中打一口井,另一个是将这个牧场与另一个已经有水源的牧场用一根管道相连.
在牧场i中打井的费用是W_i (1 <= W_i <= 100000).
把牧场i和j用一根管道相连的费用是P_ij (1 <= P_ij <= 100000, P_ij = P_ji, P_ii = 0).
请你求出Farmer John最少要花多少钱才能够让他的所有牧场都有水源.
输入:
第1行: 一个正整数N.
* 第2~N+1行: 第i+1行包含一个正整数W_i.
* 第N+2~2N+1行: 第N+1+i行包含N个用空格分隔的正整数,第j个数表示P_ij.
输出:
总共有四个牧场.在1号牧场打一口井需要5的费用,在2或者3号牧场打井需要4的费用,在4号牧场打井需要3的费用.在不同的牧场间建立管道需要2,3或4的费用.
先找到打井花费最少的牧场作为起点,然后将起点到达每个牧场最短距离dis的初值赋为各个牧场打井的花费,最后写一个Prim算法即可.
调试代码我没有删掉..
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
long long a[][],dis[],n,s,sumn=,minx=;
bool vis[];
int main()
{
memset(vis,,sizeof(vis));
memset(dis,,sizeof(dis));
cin>>n;
for(int i=;i<=n;i++)
{
cin>>dis[i];
if(dis[i]<minx)
{
minx=dis[i];
s=i;
//cout<<"WWW"<<s<<"WWW"<<endl;
}
}
sumn=sumn+dis[s];
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
cin>>a[i][j];
a[j][i]=a[i][j];
}
for(int i=;i<=n;i++)
{
if(a[s][i]<dis[i])
dis[i]=a[s][i];
}
vis[s]=;
for(int i=;i<=n;i++)
{
long long minn=,c=;
for(int j=;j<=n;j++)
if((!vis[j])&&(dis[j]<minn))
{
minn=dis[j];
c=j;
}
vis[c]=;
//cout<<"!"<<minn<<"!"<<endl;
sumn+=minn;
for(int j=;j<=n;j++)
if((a[c][j]<dis[j])&&(!vis[j]))
dis[j]=a[c][j];
}
cout<<sumn<<endl;
return ;
}
usaco oct09 Watering Hole的更多相关文章
- [USACO] 打井 Watering Hole
题目描述 Farmer John has decided to bring water to his N (1 <= N <= 300) pastures which are conven ...
- p1221网络布线(最小生成树 Prim(普里母)算法) p1222 Watering Hole
描述 Description 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助.约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路 ...
- Kruskal || BZOJ 1601: [Usaco2008 Oct]灌水 || Luogu P1550 [USACO08OCT]打井Watering Hole
题面:P1550 [USACO08OCT]打井Watering Hole 题解:无 代码: #include<cstdio> #include<cstring> #includ ...
- [USACO08OCT]Watering Hole
[USACO08OCT]Watering Hole 题目大意: Farmer John 有\(n(n\le300)\)个牧场,他希望灌溉他的所有牧场.牧场编号为\(1\sim n\),要灌溉一个牧场有 ...
- bzoj1601 / P1550 [USACO08OCT]打井Watering Hole(堆优化prim)
P1550 [USACO08OCT]打井Watering Hole 对于自己建水库的情况,新建一个虚拟结点,和其他点的边权即为自建水库的费用 这样问题就转化为一个裸最小生成树问题了. 这里用堆优化 ...
- 洛谷P1550 [USACO08OCT]打井Watering Hole
P1550 [USACO08OCT]打井Watering Hole 题目背景 John的农场缺水了!!! 题目描述 Farmer John has decided to bring water to ...
- Luogu P1550 打井Watering Hole
P1550 [USACO08OCT]打井Watering Hole 题目背景 John的农场缺水了!!! 题目描述 Farmer John has decided to bring water to ...
- cogs 397. [USACO Oct09] 热浪 Dijkstra
397. [USACO Oct09] 热浪 ★☆ 输入文件:heatwvx.in 输出文件:heatwvx.out 简单对比时间限制:1 s 内存限制:128 MB 德克薩斯純樸的民眾 ...
- 题解——洛谷P1550 [USACO08OCT]打井Watering Hole(最小生成树,建图)
题面 题目背景 John的农场缺水了!!! 题目描述 Farmer John has decided to bring water to his N (1 <= N <= 300) pas ...
随机推荐
- js-传送file
这是选择文件的标签 <input type="file" class="add-image-input"> 这是js实现传输文件 var addIm ...
- distinct group by
select num from test_test group by num; 比 select distinct(num) from test_test; 效率高 select count(dis ...
- leetcode108
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- php中array_map和array_walk的使用对比_php技巧
一.array_map() 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调 ...
- 5.log4j报错
java.lang.UnsupportedClassVersionError: org/apache/log4j/Logger : Unsupported major.minor version 51 ...
- iframe中子页面父页面里函数互调
在iframe中很多要用的子页面父页面函数互调的情况,下面看一下各自用法,本人写个人网站的时候用过其他场景尚未试过 子页面调父页面 function fu(){ alert('父'); } funct ...
- 机器学习入门-随机森林温度预测-增加样本数据 1.sns.pairplot(画出两个关系的散点图) 2.MAE(平均绝对误差) 3.MAPE(准确率指标)
在上一个博客中,我们构建了随机森林温度预测的基础模型,并且研究了特征重要性. 在这个博客中,我们将从两方面来研究数据对预测结果的影响 第一方面:特征不变,只增加样本的数据 第二方面:增加特征数,增加样 ...
- springmvc @valid
JSR303是javaEE6中的一个子规范:Bean Validation.官方实现是HibernateValidatior.校验: 使用springmvc 的validate机制,需要引入valid ...
- ubuntu16.04 dpkg强制安装 teamviewer
dpkg遇到安装有依赖,而依赖的包有无法安装的时候,可以试试强制安装: .90154_amd64.deb 虽然报错,但是安装后还是可以使用. 如果使用: .90154_amd64.deb 提示下面错误 ...
- Redis need tcl 8.5 or newer
hadoop@stormspark:~/workspace/redis2.6.13/src$ make testYou need tcl 8.5 or newer in order to run th ...