USACO 3.2.6 Sweet Butter 香甜的黄油(最短路)
Description
农夫John发现做出全威斯康辛州最甜的黄油的方法:糖。把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。当然,他将付出额外的费用在奶牛上。 农夫John很狡猾。像以前的Pavlov,他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶。 农夫John知道每只奶牛都在各自喜欢的牧场(一个牧场不一定只有一头牛)。给出各头牛在的牧场和牧场间的路线,找出使所有牛到达的路程和最短的牧场(他将把糖放在那)
Input
第一行: 三个数:奶牛数N,牧场数(2<=P<=800),牧场间道路数C(1<=C<=1450) 第二行到第N+1行: 1到N头奶牛所在的牧场号 第N+2行到第N+C+1行: 每行有三个数:相连的牧场A、B,两牧场间距离D(1<=D<=255),当然,连接是双向的
Output
一行 输出奶牛必须行走的最小的距离和
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\ | \\| \ C3C2 @--5--@P3 P4 } */
Sample Output
8 /*{说明:放在4号牧场最优 }*/ 解题思路:最短路问题,找到一个点,所有目标点到该点的距离之和最短。我最开始想用Floyd算法,我觉得最多不就是800个点,n^3应该不超时,但还是超时了,对于这道题应该使用SPFA算法,SPFA是求最短路的算法中时间复杂度最低的算法。
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <vector> 5 #include <queue> 6 #define inf 0x3f3f3f3f 7 #define maxn 1500 8 using namespace std; 9 struct EDGE 10 { 11 int to; 12 int v; 13 } t; 14 vector<EDGE>e[maxn]; 15 int n,m,z; 16 int a[maxn]; 17 int vis[maxn]; 18 int dis[maxn]; 19 void add(int from,int to,int v) 20 { 21 t.to=to; 22 t.v=v; 23 e[from].push_back(t); 24 } 25 void SPFA(int s) 26 { 27 queue<int> q; 28 int i; 29 for(i=1;i<=n;i++)///每次调用的初始化 30 { 31 dis[i]=inf; 32 vis[i]=0; 33 } 34 q.push(s); 35 dis[s] = 0; 36 vis[s] = 1; 37 while(!q.empty()) 38 { 39 int now=q.front(); 40 q.pop(); 41 vis[now]=0;///弹出队列,取消标志 42 for(i=0;i<e[now].size();i++) 43 { 44 if(dis[e[now][i].to]>dis[now]+e[now][i].v) 45 { 46 dis[e[now][i].to]=dis[now]+e[now][i].v; 47 if(!vis[e[now][i].to])///不在队列就加到队列中 48 { 49 vis[e[now][i].to]=1; 50 q.push(e[now][i].to); 51 } 52 } 53 } 54 } 55 } 56 int main() 57 { 58 int from,to,v,i,j,mins,ans; 59 scanf("%d%d%d",&z,&n,&m); 60 for(i=1; i<=z; i++) 61 { 62 scanf("%d",&a[i]); 63 } 64 mins=inf; 65 for(i=1; i<=m; i++) 66 { 67 scanf("%d%d%d",&from,&to,&v); 68 add(from,to,v); 69 add(to,from,v); 70 } 71 for(i=1; i<=n; i++) 72 { 73 ans=0; 74 SPFA(i); 75 for(j=1; j<=z; j++) 76 { 77 ans+=dis[a[j]]; 78 } 79 if(ans<mins)///找最小和 80 { 81 mins=ans; 82 } 83 } 84 printf("%d\n",mins); 85 return 0; 86 }
转载于:https://www.cnblogs.com/wkfvawl/p/9705780.html
USACO 3.2.6 Sweet Butter 香甜的黄油(最短路)相关推荐
- Sweet Butter 香甜的黄油
Sweet Butter 香甜的黄油 题目大意:m个点,n头奶牛,p条边,每一头奶牛在一个点上,一个点可以有多只奶牛,求这样一个点,使得所有奶牛到这个点的距离之和最小. 注释:n<=500 , ...
- USACO 3.2 Sweet Butter 香甜的黄油
Description 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他 ...
- 3.2.6 Sweet Butter香甜的黄油 USACO
题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费 ...
- SSL-1693 USACO 3.2 Sweet Butter 香甜的黄油 (Bellman DIJ SPFA)
题目大意 找到一个点,使得所有的有黄牛的点到这个点的距离之和最小. 思路 SPFA算法 代码 #include<cstdio> #define INF 2147483648//初始化一个很 ...
- 【图论】【最短路】【SPFA】香甜的黄油 Sweet Butter (luogu 1828)
香甜的黄油 Sweet Butter luogu 1828 题目大意: 有n头奶牛,他们在不同的牧场中,他们之间有一些路,现在要让他们去一个地方吃黄油,使他们的总距离最小 题目描述 农夫John发现做 ...
- 洛谷P1828 香甜的黄油 Sweet Butter
香甜的黄油 Sweet Butter 黄油真的是这么做的吗?!!![惶恐] 这道题是Dijkstra算法的简单变形 通过题意我们要找到一个点使奶牛所在点的路程和最短.通过Dijkstra的模板我们可以 ...
- 信息学奥赛一本通 1345:【例4-6】香甜的黄油 | 洛谷 P1828 [USACO3.2]香甜的黄油 Sweet Butter
[题目链接] ybt 1345:[例4-6]香甜的黄油 洛谷 P1828 [USACO3.2]香甜的黄油 Sweet Butter [题目考点] 1. 图论 最短路径 [解题思路] 将题目叙述转为图论 ...
- [USACO3.2]香甜的黄油 Sweet Butter
香甜的黄油 1.问题分析 2.具体代码 3.总结 题目链接 1.问题分析 模拟一遍过程,就可以发现只需要先跑一遍最短路,再搜出结果就行了. 复习最短路的水题. 2.具体代码 #include < ...
- 香甜的黄油(SPFA)
香甜的黄油(SPFA) Description 农夫John发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好 ...
最新文章
- mysql怎么创建表视频教程_mySQL学习入门教程——2.创建表
- 3.实战HTML+CSS布局(实例入门篇)
- http php mysql_apache+php+mysql
- OpenCV 4.0 Dis光流算法 运动检测
- PHPExcel所遇到问题的知识点总结
- 文本编辑器实现文本打印的功能
- 全球及中国儿童滑步车市场销量需求调查与竞争格局展望报告2022年
- python办公代码_[Python] 自动化办公 docx操作Word基础代码
- php微信支付使用ajax,接入微信公众号支付,选择支付方式后,只弹出“error’”(php)...
- python如何导入项目,PyCharm如何导入python项目
- 安卓(android)毕业设计各种app项目
- caffe最优化方法
- 全网首发Modown主题8.31开心版
- Volatile底层实现原理
- 卫生保健所短信群发模板:预约挂号、就诊提醒、检查结果通知
- Mailgun提供了新的报告仪表板
- From Fidelity to Perceptual Quality: A Semi-Supervised Approach for Low-Light Image Enhancement
- vue 拼数字小游戏(设置表白彩蛋)
- java入门基础教程(纯干货知识点+视频资源)
- Istio - 集成ELK - HPE_INVALID_METHOD, lumberjack protocol error
热门文章
- python的字符串类型_python如何判断某变量是否为字符串类型
- brother标签打印软件_标签打印软件如何调整字体高度
- java随机加法题_Java简单随机加法算式
- linux下部署tomcat没起成功,linux下部署tomcat 上线jpress博客系统
- python常用标准库的基本用法_[每天一个python小技巧]Python中标准库OS的常用方法总结...
- linux nload_Linux nload命令
- android jni示例_Android动画示例
- python 字符串 变量_Python检查变量是字符串
- swagger map示例_Android Google Map Street View示例
- 不要运行explorer_在Internet Explorer浏览器上运行测试