Sweet Butter 香甜的黄油
Sweet Butter 香甜的黄油
题目大意:m个点,n头奶牛,p条边,每一头奶牛在一个点上,一个点可以有多只奶牛,求这样一个点,使得所有奶牛到这个点的距离之和最小。
注释:n<=500 , m<=800 , p<=1450 , 连边的牧场之间的距离d<=255
想法:显然,这是一个最短路问题,有两种途径:1. 跑多源最短路。2. 跑m遍单源最短路。
第1种想法想到floyd , 时间复杂度O(m^3)=O(5.12*10^8),过不去,用第二种想法吧。
由于floyd都T了,n遍Dijkstra的时间复杂度也是O(m^3),而另一种单源最短路是spfa,时间复杂度O(m*p+m*n)。所以,spfa才是我们想要的算法。
首先,对于每一个节点跑一遍spfa,注意清数组。存边用邻接矩阵或链式前向星均可,博主在此采用链式前向星。
最后,附上丑陋的代码...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
queue<int>q;
int f[],a[];
bool v[];
int to[],val[],next[],head[],tot;
void add(int x,int y,int z)//存边
{
to[++tot]=y;
val[tot]=z;
next[tot]=head[x];
head[x]=tot;
}
void spfa(int xp)//spfa,xp表示当前枚举的源点
{
memset(f,0x3f,sizeof(f));
memset(v,,sizeof(v));
q.push(xp),f[xp]=,v[xp]=;
while(q.size())
{
int x,y;
x=q.front(),q.pop(),v[x]=;
for(int i=head[x];i;i=next[i])
{
if(f[y=to[i]]>f[x]+val[i])
{
f[y]=f[x]+val[i];
if(v[y]==) q.push(y),v[y]=;
}
}
}
}
int main()
{
int n,m,p;
scanf("%d%d%d",&n,&m,&p);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
int fr,t,va;
for(int i=;i<=p;i++)
{
scanf("%d%d%d",&fr,&t,&va);
add(fr,t,va);//存双向边
add(t,fr,va);//存双向边
}
long long minn=9220000000000000ll;
for(int i=;i<=m;i++)
{
spfa(i);
long long ans=;
for(int j=;j<=n;j++)
{
ans+=f[a[j]];
}
minn=min(ans,minn);
}
printf("%lld",minn);
return ;
}
小结,错误
1.双向边,双向边,双向边
2.line 60:写成了 ans=min ( minn , ans ) 全盘爆蛋
3.因为本题不一定连通,所以在一定程度上我们需要考虑不连通的情况,所以ans和minn开long long 来解决。
转载请注明:http://www.cnblogs.com/ShuraK/p/7852461.html
Sweet Butter 香甜的黄油的更多相关文章
- USACO 3.2.6 Sweet Butter 香甜的黄油(最短路)
Description 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他 ...
- 洛谷P1828 香甜的黄油 Sweet Butter
P1828 香甜的黄油 Sweet Butter 241通过 724提交 题目提供者JOHNKRAM 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 我的SPFA为什么TLE.. 为 ...
- 【香甜的黄油 Sweet Butter】
[香甜的黄油 Sweet Butter] 洛谷P1828 https://www.luogu.org/problemnew/show/P1828 JDOJ 1803 https://neooj.com ...
- P1828 香甜的黄油 Sweet Butter 最短路 寻找一个点使得所有点到它的距离之和最小
P1828 香甜的黄油 Sweet Butter 闲来无事 写了三种最短路(那个Floyed是不过的) 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1 ...
- Cogs 309. [USACO 3.2] 香甜的黄油 dijkstra,堆,最短路,floyd
题目:http://cojs.tk/cogs/problem/problem.php?pid=309 309. [USACO 3.2] 香甜的黄油 ★★ 输入文件:butter.in 输出文件 ...
- AC日记——香甜的黄油 codevs 2038
2038 香甜的黄油 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 农夫Jo ...
- [最短路]P1828 香甜的黄油 Sweet Butter
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- P1828 香甜的黄油 Sweet Butter
对于这道洛谷ac而我整了一下午的codevs的题,我也是很绝望啊. 原因是队列数组开小了我勒个去???我说STL怎么能过 题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧 ...
- [LUOGU] P1828 香甜的黄油 Sweet Butter
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
随机推荐
- 安装STS报错(三)
安装STS报错 1.具体报错如下 Failure to transfer org.codehaus.plexus:plexus-archiver:jar:1.2 from http://repo.ma ...
- org.hibernate.exception.GenericJDBCException: Could not open connection
1.错误描述 org.hibernate.exception.GenericJDBCException: Could not open connection at org.hibernate.exce ...
- JavaScript控制输入框中只能输入中文、数字和英文
1.问题背景 遇到这样一个问题:有一个输入框,要求只能输入中文.数字和英文(即过滤特殊字符串) 2.JS代码 function checkUsername() { //正则表达式 var reg = ...
- 芝麻HTTP: Scrapy小技巧-MySQL存储
这两天上班接手,别人留下来的爬虫发现一个很好玩的 SQL脚本拼接. 只要你的Scrapy Field字段名字和 数据库字段的名字 一样.那么恭喜你你就可以拷贝这段SQL拼接脚本.进行MySQL入库处理 ...
- windows打开和关闭默认共享方法汇总
Windows启动时都会默认打开admin$ ipc$ 和每个盘符的共享,对于不必要的默认共享,一般都会把它取消掉,可当又需要打开此默认共享时,又该从哪里设置呢.经过自己的验证,汇总出一下方法. 一: ...
- 九九乘法表的实现--JAVA基础
JAVA算法实现:输出九九乘法表 Jiujiu.java: package com.qkys.www; public class Jiujiu { public static void main(St ...
- Linux入门——开机启动过程浅析
Linux开机启动过程浅析 Introduction 开机启动过程分为以下6个步骤,分别是BIOS, MBR, GRUB, Kernel, Init, RunLevel, RunDefinition ...
- Maven 搭建 SSM 项目 (oracle)
简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件 ...
- c#开发wps插件(3)部署
上一篇,我们完成了具体的开发工作,但是最终必须得部署到客户机器上.所以,部署方面,我花费了一些时间去研究,现在总结下.上一篇中,我为什么建议开发人员安装wps专业版呢?因为装了专业版,方便我们开发,安 ...
- Linux中“is not in the sudoers file”解决方法
当在终端执行sudo命令时,系统提示"hadoop is not in the sudoers file": 其实就是没有权限进行sudo,解决方法如下(这里假设用户名是cuser ...