题目简叙:

寒假到了,N头牛都要去参加一场在编号为X(1≤X≤N)的牛的农场举行的派对(1≤N≤1000),农场之间有M(1≤M≤100000)条有向路,每条路长Ti(1≤Ti≤100)。

每头牛参加完派对后都必须回家,无论是去参加派对还是回家,每头牛都会选择最短路径,求这N头牛的最短路径(一个来回)中最长的一条路径长度。

分析:

其实这道题的考点就是单元最短路径和单终点最短路径。

单终点最短路径其实就可以把所有的边反过来,直接就转换为单源最短路径了。

于是此题的核心就是跑两遍dijkstra或spfa了(本人偏好dijkstra)。

还有就是注意变量不要重复

代码:

#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
struct edge
{int to,val;
};
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q,w;
vector<edge> e[1005],f[1005];
int n,m,s;
int dis[1005],his[1005],vis[1005],visit[1005];
void dijkstra_zheng()//正常的单元最短路,也就是牛们散伙时的最短路
{for(int i=1;i<=n;i++){dis[i]=2147483647;}dis[s]=0;q.push(make_pair(0,s));while(!q.empty()){int x=q.top().second;q.pop();if(vis[x]==1)continue;vis[x]=1;for(int i=0;i<e[x].size();i++){int y=e[x][i].to;if(dis[x]+e[x][i].val<dis[y]){dis[y]=dis[x]+e[x][i].val;q.push(make_pair(dis[y], y));}}}
}
void dijkstra_dao()//反过来的最短路,也就是牛们去开派对的最短路
{for(int i=1;i<=n;i++){his[i]=2147483647;}his[s]=0;w.push(make_pair(0,s));while(!w.empty()){int x=w.top().second;w.pop();if(visit[x]==1)continue;visit[x]=1;for(int i=0;i<f[x].size();i++){int y=f[x][i].to;if(his[x]+f[x][i].val<his[y]){his[y]=his[x]+f[x][i].val;w.push(make_pair(his[y], y));}}}
}
int main()
{scanf("%d%d%d",&n,&m,&s);for(int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);edge tmp;tmp.to=y;tmp.val=z;e[x].push_back(tmp);tmp.to=x;tmp.val=z;f[y].push_back(tmp);//倒着再存一遍}dijkstra_zheng();dijkstra_dao();int ans=0;for(int i=1;i<=n;i++){if(his[i]+dis[i]>ans){ans=his[i]+dis[i];}//求最大值就行了}printf("%d",ans);
}

码风较丑陋,请多包涵

转载于:https://www.cnblogs.com/ShineEternal/p/10834328.html

[USACO07FEB]银牛派对Silver Cow Party相关推荐

  1. 洛谷 P1821 [USACO07FEB]银牛派对Silver Cow Party

    题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...

  2. 洛谷P1821 [USACO07FEB]银牛派对Silver Cow Party

    题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...

  3. [USACO07FEB]银牛派对Silver Cow Party---最短路模板题

    银牛排队 对于我这种蒟蒻来说,还是不要跑一次单元最短路.跑两次好写呀(- ̄▽ ̄)- 而题目中是有向图.如果如果按照题意进行最短路的话.就会出现一个单终点最短路和一个单起点最短路 对于单起点自然就是套模 ...

  4. [Luogu1821][USACO07FEB]银牛派对Silver Cow Party

    由题意可知,我们需要求的是很多个点到同一个店的最短距离,然后再求同一个点到很多个点的最短距离. 对于后者我们很好解决,就是很经典的单源最短路径,跑一边dijkstra或者SPFA即可. 然而对于前者, ...

  5. 【洛谷 1821】银牛派对Silver Cow Party

    题目描述 One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the b ...

  6. Silver Cow Party (POJ - 3268 )

    Silver Cow Party (POJ - 3268 ) 这道题是我做的最短路专题里的一道题,但我还没做这个,结果比赛就出了,真是.......... 题目: One cow from each ...

  7. [POJ](3268)Silver Cow Party ---最短路径(图)

    Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 23762   Accepted: 1085 ...

  8. D - Silver Cow Party POJ - 3268

    D - Silver Cow Party POJ - 3268 dijkstra 是 O(n2),堆优化一下, O(nlogn) 对每个点跑一次 dj, 取 max(dis(x->i)+dis( ...

  9. 全球3D机器视觉技术引领者,银牛微电子强势登陆中国市场

    银牛微电子(Inuitive)重磅推出"3D机器视觉模组C158",立足3D视觉 + SLAM + AI算法,为机器人产业提供全球先进的3D机器视觉产品. 全球先进的芯片上3D深度 ...

最新文章

  1. 新版 apache_2.0.54 php-5.0.4 mysql-4.1.12a 组合安装向导(原创)
  2. 人生第一个快速幂的题(HDU - 1097--A hard puzzle )
  3. 等同于JavaScript isset()
  4. 2020-12-18 Matlab LQR 推导及简单应用
  5. canal应用四:canal-adapter的使用
  6. 可信赖的服务器监控系统,可信赖的网络监控系统,源于专业和专注.PDF
  7. IIS安装2个SSL_顶级域名0元撸-免费注册2个腾讯云域名 免费SSL证书
  8. Java语言概述及常用DOS命令
  9. vba for wps 7.0_两表数据核对,WPS表格真香
  10. 费诺码设计matlab,费诺编码的matlab实现.doc
  11. Thymeleaf-extras-Spring Security 权限控制
  12. SAP动态下载数据库表数据至EXCEL
  13. npz文件转为npy_numpy文件存取-npz,npy
  14. 前端常用PS技巧总结之更换图片背景图片
  15. 微信服务号 — 社区卫生服务中心申请
  16. Centos 7下PCIe Bus Error: severity=Corrected, type=Data Link Layer解决方案
  17. 桌面自动化实现原理-RPA+
  18. Android shell脚本自动启动app,关闭app,遇到crash自动停止
  19. 申报高新技术企业需要注意的问题
  20. 在线学习python

热门文章

  1. Laravel5.2之模型关联预加载
  2. jquery的html,text,val
  3. Solartimes共识——PowerDesigner设计——引用的命名
  4. PAT1003. 我要通过!
  5. C++ STL学习笔记(5) Vector容器, array容器,deque容器
  6. linux 局域网内互ping丢包_ping命令还能这么用?
  7. Cover Protocol更新赔偿计划 新增三个新COVER代币获赔方
  8. 今日恐慌与贪婪指数为92 贪婪程度有所上升
  9. 数据型驱动风控有什么内容?从蚂蚁借呗与花呗谈起~
  10. 互联网数据分析-入门到实战-笔记