★★   输入文件:butter.in   输出文件:butter.out   简单对比
时间限制:1 s  
内存限制:128 MB

描述

农夫John发现做出全威斯康辛州最甜的黄油的方法:糖。把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。当然,他将付出额外的费用在奶牛上。

农夫John很狡猾。像以前的Pavlov,他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶。

农夫John知道每只奶牛都在各自喜欢的牧场(一个牧场不一定只有一头牛)。给出各头牛在的牧场和牧场间的路线,找出使所有牛到达的路程和最短的牧场(他将把糖放在那)

格式

INPUT FORMAT:

第一行: 三个数:奶牛数N,牧场数P(2<=P<=800),牧场间道路数C(1<=C<=1450)

第二行到第N+1行: 1到N头奶牛所在的牧场号

第N+2行到第N+C+1行: 每行有三个数:相连的牧场A、B,两牧场间距离D(1<=D<=255),当然,连接是双向的

OUTPUT FORMAT:

一行 输出奶牛必须行走的最小的距离和

SAMPLE INPUT

3 4 5
2
3
4
1 2 1
1 3 5
2 3 7
2 4 3
3 4 5

样例图形

         P2
P1 @--1--@ C1
\ |\
\ | \
5 7 3
\ | \
\| \ C3
C2 @--5--@
P3 P4

SAMPLE OUTPUT

8

{说明: 放在4号牧场最优 }

思路

最短路算法暴算;

我用的SPFA;

代码实现

 #include<cstdio>
#include<cstring>
const int maxn=1e4;
const int maxm=1e5;
int n,p,c,now,ans=1e9;
int a,b,u,v,w;
int s[maxn],d[maxn];
int h[maxm],hs,et[maxm],ew[maxm],en[maxm];
void add(int u,int v,int w){
++hs,et[hs]=v,ew[hs]=w,en[hs]=h[u],h[u]=hs;
++hs,et[hs]=u,ew[hs]=w,en[hs]=h[v],h[v]=hs;
}
int q[maxn],head,tail;
bool f[maxn];
void SPFA(int s){
memset(d,0x7f,sizeof(d));
head=tail=d[s]=;
q[head++]=s;
while(head>tail){
a=q[tail++],f[a]=;
for(int i=h[a];i;i=en[i])
if(0ll+ew[i]+d[a]<d[et[i]]){
d[et[i]]=ew[i]+d[a];
if(!f[et[i]]) q[head++]=et[i],f[et[i]]=;
}
}
}
int main(){
freopen("butter.in","r",stdin);
freopen("butter.out","w",stdout);
scanf("%d%d%d",&n,&p,&c);
for(int i=;i<=n;i++){
scanf("%d",&a);
++s[a];
}
for(int i=;i<=c;i++){
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
}
for(int i=;i<=p;i++){
SPFA(i);
for(int j=;j<=p;j++) now+=s[j]*d[j];
ans=ans<now?ans:now,now=;
}
printf("%d\n",ans);
return ;
}

[COGS309] [USACO 3.2] 香甜的黄油的更多相关文章

  1. Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd

    题目:http://cojs.tk/cogs/problem/problem.php?pid=309 309. [USACO 3.2] 香甜的黄油 ★★   输入文件:butter.in   输出文件 ...

  2. 洛谷P1828 香甜的黄油 Sweet Butter

    P1828 香甜的黄油 Sweet Butter 241通过 724提交 题目提供者JOHNKRAM 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 我的SPFA为什么TLE.. 为 ...

  3. AC日记——香甜的黄油 codevs 2038

    2038 香甜的黄油 USACO  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 农夫Jo ...

  4. Sweet Butter 香甜的黄油

    Sweet Butter 香甜的黄油 题目大意:m个点,n头奶牛,p条边,每一头奶牛在一个点上,一个点可以有多只奶牛,求这样一个点,使得所有奶牛到这个点的距离之和最小. 注释:n<=500 , ...

  5. 【香甜的黄油 Sweet Butter】

    [香甜的黄油 Sweet Butter] 洛谷P1828 https://www.luogu.org/problemnew/show/P1828 JDOJ 1803 https://neooj.com ...

  6. P1828 香甜的黄油 Sweet Butter 最短路 寻找一个点使得所有点到它的距离之和最小

    P1828 香甜的黄油 Sweet Butter 闲来无事 写了三种最短路(那个Floyed是不过的) 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1 ...

  7. 【USACO】香甜的黄油

    这是一道来自USACO的题,一般歪果仁的题都不是很好做,就比如这题 题目描述: 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶 ...

  8. 【USACO 3.2.6】香甜的黄油

    [描述] 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...

  9. USACO 3.2.6 Sweet Butter 香甜的黄油(最短路)

    Description 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他 ...

随机推荐

  1. redis的持久化的原理介绍和实现

    redis提供了持久化功能——RDB和AOF.通俗的讲就是将内存中的数据写入硬盘中. RDB一定时间取存储文件,AOF默认每秒去存储历史命令,官方建议两种方式同时使用 一.RDB(Redis Data ...

  2. Net 发布网站中遇到的几点问题

    1.windows 身份验证设置 打开IIS==>=>找到网站==> 身份验证==>打开功能==>启用windows身份验证 网站设置: 博客参考: http://blo ...

  3. MyEclipse日志文件目录

    MyEclipse存放日志的目录为: <Workspace_Root>/.metadata/.log 在该目录下存放了日志的存档和当前日志,通过该日志可以查看MyEclipse的错误信息.

  4. Ray Wenderlich 的 Objective-C编码规范

    由于我正在准备模仿饿了么这个app,到时可能有些iOS开发者参与进来.这时如果每个人的Objective-C编码风格都不一样,这样不易于保持代码一致性和难以Code Review.所以我在网上搜索到  ...

  5. LDA算法(入门篇)

    一. LDA算法概述: 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD ...

  6. PHP fSQL Tutorial

    PHP fSQL Tutorial This tutorial is designed to give a brief overview of the PHP fSQL API since versi ...

  7. Java学习4_一些基础4_输入输出_16.5.7

    读取输入: 想从控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in关联. Scanner in=new Scanner(System.in); String na ...

  8. Exception Information

    https://developer.apple.com/library/content/technotes/tn2004/tn2123.html Exception Information The t ...

  9. Java入门第37课——猜字母游戏之设计数据结构

    问题        有猜字母游戏,其游戏规则为:程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串.玩家可以猜测多次,每猜测一次,则由系统提示结果.如果猜测的完全正确,则游戏结 ...

  10. unittest自定义运行全量case or 运行指定的单个或多个case

    import unittest import os from case.zufang.test_api_area_rentProlist import Zf1 case_path = os.path. ...