题目描述 Description

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

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

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

输入描述 Input Description

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

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

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

输出描述 Output Description

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

样例输入 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号牧场最优. }
数据范围及提示 Data Size & Hint

见描述

分类标签 Tags 点此展开

思路:

  (对不起啊大佬!数组开小然后各种TLE,RE...我我我...一直70...然后就仅仅只是将数组改大而已qwq,就A了...)

  言归正传,思路就是:

  每个相同牧场出来的奶牛走的最优路径只有一条,所以不需要算多次,所以将位于同一起点的奶牛个数记录下来,在每个牧场都跑一遍spfa,寻找最小值.

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define Maxn 9999
#define MMM 0x7fffffff using namespace std; int n,p,c,tot,ans=MMM;
int num_qwq,head[Maxn],dist[Maxn];
bool pd[Maxn];
int cow,cishu[Maxn];
/*
神奇!
因为每个相同牧场出来的奶牛走的最优路径只有一条,
所以不需要算多次
*/
queue<int>q; struct cower
{
int next,to,lenth;
} qwq[Maxn];///邻接表 void add(int from,int to,int lenth)
{
qwq[++num_qwq].next=head[from];
qwq[num_qwq].to=to;
qwq[num_qwq].lenth=lenth;
head[from]=num_qwq;
} void sweetbutter(int s)
{
while(!q.empty()) q.pop();
dist[s]=;
q.push(s);
pd[s]=;
int father,son;
while(!q.empty())
{
father=q.front();
for(int p=head[father]; p!=-; p=qwq[p].next)
{
son=qwq[p].to;
int w=qwq[p].lenth;
if(dist[father]+w<dist[son])
{
dist[son]=dist[father]+w;
if(!pd[son])
{
q.push(son);
pd[son]=;
}
}
}
pd[father]=;
q.pop();
}
} int main()
{
scanf("%d %d %d",&n,&p,&c);
for(int i=; i<=n; i++)
{
scanf("%d",&cow);
cishu[cow]++;///记录奶牛出现在各个牧场的次数
}
memset(head,-,sizeof(head));
int a,b,d;
for(int i=; i<=c; i++)
{
scanf("%d %d %d",&a,&b,&d);
add(a,b,d);
add(b,a,d);
}
for(int i=; i<=p; i++)
{
fill(dist,dist+Maxn,MMM);
sweetbutter(i);
tot=;
for(int j=; j<=p; j++)///这样可以快好多!!!
tot+=dist[j]*cishu[j];
if(tot<ans) ans=tot;
}
printf("%d",ans);
return ;
}

codevs 2038 香甜的黄油x+luogu P1828 x的更多相关文章

  1. codevs 2038 香甜的黄油 USACO

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上 ...

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

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

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

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

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

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

  5. 【香甜的黄油 Sweet Butter】

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

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

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

  7. Sweet Butter 香甜的黄油

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

  8. [LUOGU] P1828 香甜的黄油 Sweet Butter

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

  9. T2038 香甜的黄油 codevs

    http://codevs.cn/problem/2038/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond   题目描述 Description 农夫John ...

随机推荐

  1. cocos2dx基础篇(20) 扩展动作CCGridAction

    [3.x]     (1)去掉"CC" [CCGridAction] CCGridAction有两个子类:CCGrid3DAction.CCTiledGrid3DAction.而我 ...

  2. [Vim] 01 凡人操作

    历史评价 编辑器之神 一个凡人的自我修养 成神是不可能成神的,只能是先入个门,然后一点一点学 Vim 官网 三种模式 插入模式(注意看光标) 命令模式(注意看光标) 编辑模式(注意看光标) 其实还有一 ...

  3. [转帖]安全公告【安全公告】CVE-2019-0708远程桌面服务远程代码执行漏洞

    [安全公告]CVE-2019-0708远程桌面服务远程代码执行漏洞 https://www.landui.com/help/nshow-9716.html 漏洞层出不穷 漏洞信息: 2019年5月14 ...

  4. MySQL-快速入门(14)MySQL性能优化

    1.MySQL性能优化包括查询速度优化.数据库结构优化.数据库服务器优化等. 优化的切入点:合理的结构设计.表结构.索引.查询语句. 2.show status查询数据库的性能参数 show stat ...

  5. 小油2018 win7旗舰版64位GHOST版的,安装telnet客户端时,提示:出现错误。并非所有的功能被成功更改。

    win7旗舰版64位GHOST版的,安装telnet客户端时,提示:出现错误.并非所有的功能被成功更改. 从安装成功的电脑上拷贝ghost版本缺少的文件,然后再安装telnet客户端,我已打包 链接: ...

  6. 安装Linux系统CentOS6.5

    个人机器搭建分布式环境时避免要使用虚拟机来满足分布式环境所需的机器,当然伪分布式除外. 简单记录下虚拟机环境的创建过程,Mac上常用的虚拟机VMware Fusion. 虚拟机资源库中新建虚拟机: 选 ...

  7. gradle上sourceSets配置&同名文件合并问题

    gradle的sourceSets可以对不同的buildType, productFlavor,buildVariant设置不同的文件路径,进行多样化处理. sourceSets{ main{ man ...

  8. mysql常见函数及其用例

    函数调用:select 函数名(实参列表) [from 表]; 函数分类: 1.单行函数 如 concat.length.ifnull等. 2.分组函数 功能:做统计使用,又称为统计函数.聚合函数.组 ...

  9. Nginx1.3.15导致Wordpress,Drupal等框架无限重定向的解决方案

    Wordpress建立的站点出现无限循环重定向问题.很多人遇到这个问题,并不是单纯Wordpress,Drupal, PHPCake等框架也都遇到同样的问题. 新版本的Nginx在收到 http:// ...

  10. tensorflow 中 inter_op 和 intra_op

    [root@localhost custom-resnet-v2]# cat runme.sh #python demo_slim.py -h #python demo_slim.py --cpu_n ...