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 ...
随机推荐
- tensorboard-sklearn数据-loss
记录sklearn数据训练时的loss值,用tensorboard可视化 三步骤:红字处 import tensorflow as tf from sklearn.datasets import lo ...
- 0_Simple__vectorAdd + 0_Simple__vectorAdd_nvrtc + 0_Simple__vectorAddDrv
▶ 使用 CUDA Runtime API,运行时编译,Driver API 三种接口计算向量加法 ▶ 源代码,CUDA Runtime API #include <stdio.h> #i ...
- Node MonGoDb 简单的增删改查
let MongoClient = require("mongodb").MongoClient; let url = "mongodb://192.168.200.10 ...
- CSS 3栏自适应布局
绝对定位 css html,body{margin: 0px;height:100%;} div{height: 100%;} .left,.right {top: 0px;position: abs ...
- border做三角符号
用border做三角符号以及其他图形 ;; border-width:20px 10px; border-style:solid; border-color:#ff3300 #ff3300 #ffff ...
- [ilink32 Error] Error: Unresolved external 'SendARP'
[ilink32 Error] Error: Unresolved external 'SendARP' referenced from E:\APPOBJ\KSRGETMAC.OBJ #pragma ...
- PowerDesigner 连接oracle数据库
TNS Service Name 不是监听名称,填写这个格式就可以了 10.0.0.2:1521/orcl
- VBA 使用区域和当前区域
VBA 选择使用区域 Sub Select_UsedRange() ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.UsedRange). ...
- VBA 选择文件
Private Function SelectFile(ByVal strFilter As String) As String Dim FileName As Variant '打开文 ...
- UI5-文档-导航栏
UI5-文档-1-前言 UI5-文档-2-开发环境 UI5-文档-2.1-使用OpenUI5开发应用 UI5-文档-2.2-使用SAP Web IDE开发应用程序 UI5-文档-2.3-使用SAPUI ...