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 ...
随机推荐
- MySQL数据库Innodb储存引擎----储存页的结构
上一篇博客回顾: 1:数据库拥有众多的储存引擎,现在主要使用的是Inoodb,这个储存引擎有Compact,Redundant,Dynamic,Compressed四种行格式 2:Compact行格式 ...
- BOM及DOM及事件
知识内容: 1.BOM介绍 2.DOM操作 3.事件 参考:http://www.cnblogs.com/liwenzhou/p/8011504.html 入门代码(DOM基本操作与事件): < ...
- Python日志配置类
# -*- coding: utf-8 -* """日志工具类 author: Jill usage: from common.logger import Log log ...
- 15. "wm_concat"_数据库中将查询出来的多条记录中的某个字段用","拼接起来
例子: select wm_concat(roleid) from lbmember where userid = ? 值的形式:1,2,3 下面是把1,2,3转换为1;2;3select repla ...
- Redis 几个全局命令, 以及事物
1, 清空当前数据库的所有数据 => flushdb 2, 清空所有数据库的所有数据 => flushall 3, key 值检索命令 => scan num match if 会 ...
- RabbitMQ 端口号解析
转自:https://www.cnblogs.com/liuxingke/articles/9889517.html 端口号解析 12345 - 4369 (epmd), 25672 (Erlang ...
- delphi c++builder JSON 生成与解析 例子
json,System.JSON,REST.JSON JSON有两种数据结构,对象和数组. 对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...} 数组 ...
- mysql使用一条sql删除多条数据
使用in delete from course where chour in(55,56,57); course:表名 chour:字段 55,56,57数据
- Nginx安装部署以及配置文件解析
Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令.Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或 ...
- IIS中的MIME类型设置
https://www.cnblogs.com/David-Young/p/5323949.html