银牛排队


对于我这种蒟蒻来说,还是不要跑一次单元最短路。跑两次好写呀(~ ̄▽ ̄)~

而题目中是有向图。如果如果按照题意进行最短路的话。就会出现一个单终点最短路和一个单起点最短路

对于单起点自然就是套模板,但对于单终点最短路怎么办呢?

显而易见的是,只有一个终点废话呢你(/゚Д゚)/

这样我们就可以反向存一次有向边。将终点变为起点,这样的话就可以套模板了合着就是刷模板题呀(▼⊿▼)

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int head[1001][2];
struct node
{
int point;
int next;
int dist;
};
node line[101000][2];
int tail;
queue<int>q0;
queue<int>q1;
bool exist[1001][2];
int dis[1001][2];
void add(int x,int y,int val,int d)
{
line[++tail][d].point=y;
line[tail][d].dist=val;
line[tail][d].next=head[x][d];
head[x][d]=tail;
}
int main()
{
int n,m,begin;
scanf("%d%d%d",&n,&m,&begin);
for(int i=1;i<=n;i++)
{
head[i][0]=head[i][1]=-1;
dis[i][0]=dis[i][1]=0x7fffffff;
}
int a,b,c;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
add(a,b,c,0);
add(b,a,c,1);
}
int pass;
q0.push(begin);
dis[begin][0]=0;
exist[begin][0]=true;
while(!q0.empty())
{
pass=q0.front();
q0.pop();
exist[pass][0]=false;
int need=head[pass][0];
while(need!=-1)
{
if(dis[line[need][0].point][0]>dis[pass][0]+line[need][0].dist)
{
dis[line[need][0].point][0]=dis[pass][0]+line[need][0].dist;
if(!exist[line[need][0].point][0])
q0.push(line[need][0].point);
}
need=line[need][0].next;
}
}
q1.push(begin);
exist[begin][1]=true;
dis[begin][1]=0;
while(!q1.empty())
{
pass=q1.front();
q1.pop();
exist[pass][1]=false;
int need=head[pass][1];
while(need!=-1)
{
if(dis[line[need][1].point][1]>dis[pass][1]+line[need][1].dist)
{
dis[line[need][1].point][1]=dis[pass][1]+line[need][1].dist;
if(!exist[line[need][1].point][1])
q1.push(line[need][1].point);
}
need=line[need][1].next;
}
}
int ans=-0x7fffff;
for(int i=1;i<=n;i++)
if(i!=begin)
ans=max(ans,dis[i][0]+dis[i][1]);
printf("%d",ans);
}

最新文章

  1. 理解Storm并发
  2. PyCharm 代码完成/代码提示
  3. 交叉验证(Cross Validation)原理小结
  4. angularjs的表单验证
  5. 在SpringMVC框架下实现文件的 上传和 下载
  6. 在VMware8.0.4安装centos6.3出现蓝屏,显示“anaconda: Fatal IO error 104 (Connection reset by peer) on X server :1.0. install exited abnormally [1/1]”?
  7. java 中遍历hashmap 和hashset 的方法
  8. web.xml中的url-pattern映射规则
  9. 分析一下FastDFS_java_client中TestClient.java这个文件以及跟它关联的这条线
  10. 04 - 替换vtkDataObject中的GetPipelineInformation 和GetExecutive 方法 VTK 6.0 迁移
  11. VS2012编译LibZip库
  12. ASP.NET MVC和jQuery DataTable整合
  13. JS学习中遇到的一些题目
  14. iOS TextView输入长度限制 设置placeholder
  15. POJ 3923 HDU 2487 Ugly Windows 简单计算
  16. Linux终端下 dstat 监控工具
  17. [USACO 13NOV]No Change
  18. Redis 学习笔记3:Jedis 连接虚拟机下的Redis 服务
  19. Windows安装nvm和node, 以及安装live-server
  20. SpringBoot内置Tomcat缓存文件目录被意外删除导致异常

热门文章

  1. 转载 Some indexes or index [sub]partitions of table VAS.TAB_PUB_CALLLOG have been marked unusable
  2. Neutron命令测试2
  3. Keepalived &amp; Lvs集群搭建实验
  4. (转)stty 命令说明及使用讲解
  5. gem install mysql遇到问题。解决方案
  6. 用Windows Live Writer离线写博客
  7. apache配置多端口对应多个虚拟目录
  8. SQL命令行操作
  9. Apache和PHP的相关配置
  10. [HZOI 2015]复仇的序幕曲