由题意可知,我们需要求的是很多个点到同一个店的最短距离,然后再求同一个点到很多个点的最短距离。
对于后者我们很好解决,就是很经典的单源最短路径,跑一边dijkstra或者SPFA即可。
然而对于前者,我们应该怎么解决呢?难道我们需要求一边Floyd?当然不可能!\(O(n^3)\)的时间复杂度,对于我们的\(n<=1000\)是果断要超时的。
深入分析,对于一张图,A到B的最短距离,应该等于B到A,在反转一张图以后的最短距离。所谓反转一张图,就是把变得方向调转。这一点是很显然的!
因此,对于问题一,我们只需要把图反转,然后求那个点到其它的最短距离即可。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define rep(i,a,n) for(register int i=(a);i<=(n);++i)
#define per(i,a,n) for(register int i=(a);i>=(n);--i)
#define fec(i,x) for(register int i=head[x];i;i=Next[i])
#define debug(x) printf("debug:%s=%d\n",#x,x)
#define mem(a,x) memset(a,x,sizeof(a))
template<typename A>inline void read(A&a){a=0;A f=1;int c=0;while(c<'0'||c>'9'){c=getchar();if(c=='-')f*=-1;}while(c>='0'&&c<='9'){a=a*10+c-'0';c=getchar();}a*=f;}
template<typename A,typename B>inline void read(A&a,B&b){read(a);read(b);}
template<typename A,typename B,typename C>inline void read(A&a,B&b,C&c){read(a);read(b);read(c);}const int maxn=1000+7,maxm=100000+7,INF=0x7f7f7f7f;
int u[maxm],v[maxm],w[maxm],Next[maxm],head[maxn],tot;
int u2[maxm],v2[maxm],w2[maxm],Next2[maxm],head2[maxn],tot2;
int n,m,p,x,y,z,ans;
int dist1[maxn],dist2[maxn];
bool visit[maxn];inline void addedge(int x,int y,int z){u[++tot]=x;v[tot]=y;w[tot]=z;Next[tot]=head[x];head[x]=tot;
}
inline void addedge2(int x,int y,int z){u2[++tot2]=x;v2[tot2]=y;w2[tot2]=z;Next2[tot2]=head2[x];head2[x]=tot2;
}void Dijkstra(int *u,int *v,int *w,int *head,int *Next,int *dist,int s){mem(visit,0);dist[s]=0;rep(i,1,n){int Min=INF,x;rep(i,1,n)if(!visit[i]&&dist[i]<Min)Min=dist[i],x=i;visit[x]=1;fec(i,x)if(!visit[v[i]]&&dist[v[i]]>dist[x]+w[i])dist[v[i]]=dist[x]+w[i];}
}void Init(){read(n,m,p);rep(i,1,m){read(x,y,z);addedge(x,y,z);addedge2(y,x,z); }
}void Work(){mem(dist1,0x7f);mem(dist2,0x7f);Dijkstra(u,v,w,head,Next,dist1,p);Dijkstra(u2,v2,w2,head2,Next2,dist2,p);rep(i,1,n)ans=max(ans,dist1[i]+dist2[i]);printf("%d\n",ans);
}int main(){Init();Work();return 0;
}

转载于:https://www.cnblogs.com/hankeke/p/USACO07FEB-Silver_Cow_Party.html

[Luogu1821][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

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

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

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

  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. 帮人搬,上海的房子貌似不贵
  2. c语言写贪吃蛇什么水平_学了一些C语言,也不知道自己学到什么程度,自己想写个贪吃蛇但是写不出来,想看懂下面这个程序,求解释...
  3. 揭秘微信「看一看」如何精准挖掘你感兴趣的内容
  4. js_jQuery【下拉菜单联动dom操作】
  5. linux驱动:自动创建设备节点
  6. java单例注册表_Java单例模式(Singleton)
  7. [转载]Oracle ltrim() 函数用法
  8. 世界杯迄今最火的一场比赛 一文看懂世界杯背后的阿里云黑科技
  9. 十面阿里Java程序员终拿下阿里P6offer
  10. 这个沙盒游戏建立在数字时代,你能通关吗?
  11. java 流已被关闭_mybatis oracle java.sql.SQLException: 流已被关闭问题
  12. 手机浏览器都是按照什么分辨率解析移动端网页的
  13. runTime动态给类添加属性
  14. 关于Synchronized的用法
  15. JXSE 2.5 : What's Cool #5 -- java.util.concurrent
  16. 微软官方升级win10工具MediaCreationTool使用方法
  17. 0xl c语言中003是整形常量,整型常量
  18. 每周大数据论文(一)Data-intensive applications, challenges, techniques and technologies: A survey on Big Data
  19. XXX@1.0.0 build: `NODE_ENV=production webpack --config webpack.config.js`报错的解决
  20. 小米机顶盒显示网络无法连接服务器,小米盒子无线网络连接不上怎么回事 - 卡饭网...

热门文章

  1. 【Attention】Visual Attention Network
  2. 在余额宝里放30万,每天在家什么都不干,利息够生活吗?
  3. C++17标准制定完成
  4. sql 相加_SQL经典题型
  5. git 回退到某个commit_it lesson2 版本回退
  6. 深度学习试题_高中生物:今年高考试题3点显著变化及5个备考建议!不看准吃亏...
  7. linux内核中测量时间的方法,Linux内核中获取时间函数do_gettimeofday
  8. java连接mongodb_第78天: Python 操作 MongoDB 数据库介绍
  9. python3 for_Python3: for 表达式
  10. 根据oracle入库数据进行告警,Oracle 启动故障案例之--ORA-600 [4193]错误