好了,好久没发题解,这次来一发SPFA,看题:
Description
农场有N(1≤N≤1000)个牛棚,每个牛棚都有1只奶牛要参加在X牛棚举行的奶牛派对.共有M(1≤M≤100000)条单向
路连接着牛棚,第i条踣需要Ti的时间来通过.牛们都很懒,所以不管是前去X牛棚参加派对还是返回住所,她们都
采用了用时最少的路线.那么,用时最多的奶牛需要多少时间来回呢?
Input
第1行:三个用空格隔开的整数.
第2行到第M+1行,每行三个用空格隔开的整数:Ai, Bi,以及Ti.表示一条道路的起点,终点和需要花费的时间.
Output
唯一一行:一个整数: 所有参加聚会的奶牛中,需要花费总时间的最大值.
Sample Input
4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3
Sample Output
10
//共有4只奶牛参加聚会,有8条路,聚会位于第2个农场.
第4只奶牛可以直接到聚会所在地(花费3时间),然后返程路线经过第1和第3个农场(花费7时间),总共10时间.


很明显,这么大的数据是不允许我们用floyed的,dijkstra堆优化可以考虑一下,但我这里写的是SPFA,就是具体SPFA的过程我就不一一概述了,就是枚举一个点到点x的最短路,把这个值用数组a存起来,再求出x到各点的最短路然后枚举最大点i算出最大的a[i]+dist[i]即答案了,具体代码如下:

#include<cstdio>
#define INF 10000005
using namespace std;
const int N=1001;
int n,m,x,dist[N],val[N][N],g[N][N],num[N],team[20001],adda,addb,costi,a[N];
bool ex[20001];
void init()//读入
{for(int i=1;i<=m;i++){scanf("%d%d%d",&adda,&addb,&costi);val[adda][addb]=costi;//双向边邻接矩阵g[adda][++num[adda]]=addb;g[addb][++num[addb]]=adda;}
}
void SPFA(int s)//SPFA
{for(int i=1;i<=n;i++){dist[i]=INF;ex[i]=false;team[i]=false;}//初始化int head=0,tail=1,u;team[1]=s,dist[s]=0,ex[s]=true;while(head!=tail){head++;head=((head-1)%1601)+1;u=team[head];ex[u]=false;for(int i=1;i<=num[u];i++)//枚举与u相连的点if(dist[g[u][i]]>dist[u]+val[u][g[u][i]]){dist[g[u][i]]=dist[u]+val[u][g[u][i]];if(!ex[g[u][i]]){tail++;tail=((tail-1)%1601)+1;team[tail]=g[u][i];ex[g[u][i]]=true;}}}
}
void GK_sb()
{for(int i=1;i<=n;i++){SPFA(i);a[i]=dist[x];//用a数组保存i到x的最短路}SPFA(x);int ans=-1;for(int i=1;i<=n;i++){//printf("%d\n",a[i]+dist[i]);if(a[i]+dist[i]<INF&&a[i]+dist[i]>ans)ans=a[i]+dist[i];//更新最大值}printf("%d\n",ans);
}
int main()
{scanf("%d%d%d",&n,&m,&x);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){val[i][j]=INF;}init();GK_sb();return 0;
}

如果各位觉得我的博客有不足的话欢迎指出,身为蒟蒻自己是深深地了解自己的表达不足,当然如果觉得好的话,可以看看我的其他blog如何,欢迎纠错,谢谢各位的观看。

[Usaco2007 Feb]Cow Party 奶牛派对相关推荐

  1. poj 3268 bzoj 1631: [Usaco2007 Feb]Cow Party(最短路)

    1631: [Usaco2007 Feb]Cow Party Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 855  Solved: 613 [Subm ...

  2. BZOJ 1631: [Usaco2007 Feb]Cow Party【最短路】

    1631: [Usaco2007 Feb]Cow Party [题目描述] 传送门 题解 正向建边,从X开始刷一趟SPFA,然后反向建边,从X刷一趟SPFA,最后两次的答案加和就可以了. 代码如下 # ...

  3. bzoj 1638: [Usaco2007 Mar]Cow Traffic 奶牛交通(拓扑排序?+DP)

    1638: [Usaco2007 Mar]Cow Traffic 奶牛交通 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 971  Solved: 37 ...

  4. bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换)

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 706  Solved: 413 ...

  5. bzoj 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏(floyd)

    1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 715  Solved: 47 ...

  6. BZOJ 1631==USACO 2007== POJ 3268 Cow Party奶牛派对

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19226   Accepted: 8775 Description One ...

  7. 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典(DP)

    1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 633  Solved ...

  8. 1696: [Usaco2007 Feb]Building A New Barn新牛舍

    1696: [Usaco2007 Feb]Building A New Barn新牛舍 Time Limit: 5 Sec   Memory Limit: 64 MB Submit: 378   So ...

  9. BZOJ 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛【Floyd】

    1612: [Usaco2008 Jan]Cow Contest奶牛的比赛 Time Limit: 5 Sec Memory Limit: 64 MB Description FJ的N(1 <= ...

最新文章

  1. CPU架构的llvm后端
  2. pandas 数据分析 相关性_探索 COVID-19 新冠数据来学习 Pandas
  3. 编写高质量代码改善C#程序的157个建议——建议127:用形容词组给接口命名
  4. k8s部署ingress:使用heptio-contour部署ingress controller(通过sealos安装,非nginx-ingress类型)
  5. 机器学习之 weka学习(三)
  6. 计算机与广播电视论文,浅谈广播电视中计算机技术的作用论文.pdf
  7. 快速删除大文件和大量小文件。
  8. List转换为数组Array的方法
  9. 老板要我开发一个简单的工作流,15 次需求变更,我干到秃了。。
  10. php 常用正则表达 邮箱 手机号啥的
  11. 使用webbench进行压力测试
  12. 电视盒子 android tv6,【亲测】S905L/S905L-B安卓TV6.0通刷固件
  13. 前端的小玩意(9.4)——做一个仿360工具箱的web页面(自动生成所有图标,对图标添加响应逻辑)
  14. 《愚公移山》深度解读
  15. 提取OTU表格中分类学名称
  16. 设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m0)个叶子结点,那么该二叉树上的结点总数为( )。
  17. spring使用ExcludeFilter和IncludeFilter
  18. 【练习题】第二章--变量,表达式,语句(Think Python)
  19. Qt开源作品33-图片开关控件
  20. QT6在线安装下载速度慢的解决办法,QT6,QT5.15.1,QT5.15.0及旧版本都支持

热门文章

  1. mysql 数据横向拼接,MYSQL实现不关联表横向拼接
  2. 软件质量缺陷管理工具大全
  3. 华为某员工的人生规划和临别赠言,学习学习
  4. Photoshop入门与进阶实例:4.3 图像幻觉
  5. “动员商家”策略相继而出,天猫京东吹响“双11”号角
  6. Safari浏览器删除不了数据怎么办
  7. Android开发 第五课 Android的几种布局方式
  8. 跑跑卡丁车登录提示服务器无响应怎么办,跑跑卡丁车登陆问题
  9. 调试代码遗留_如何征服遗留代码
  10. winform之Enter键触发按钮事件