寻找从i到X,再从X到i的最短路

可以在正向图中从X开始跑一遍最短路,每个点的距离dis1[i]当作从X回到点i的距离

再将图反向从X再跑一遍,每个点的距离dis2[i]当作从i到点X的距离

最后搜索dis1[i]+dis2[i]值最大的输出

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef pair<short,int> P;
vector<P> graph1[],graph2[];
int N,M,X,dis1[],dis2[];
bool vis1[],vis2[];
queue<short> q;
int main()
{
ios::sync_with_stdio();cin.tie();
int i,j,d,cnt,len,ans=;
short a,b,id;
cin>>N>>M>>X;
for(i=;i<M;i++)
{
cin>>a>>b>>d;
graph1[a].push_back(P(b,d));
graph2[b].push_back(P(a,d));
}
memset(dis1,INF,sizeof dis1);
memset(dis2,INF,sizeof dis2);
memset(vis1,false,sizeof vis1);
memset(vis2,false,sizeof vis2);
dis1[X]=dis2[X]=;
vis1[X]=vis2[X]=true;
q.push(X);
while(!q.empty())
{
id=q.front();
q.pop();
cnt=graph1[id].size();
for(i=;i<cnt;i++)
{
len=dis1[id]+graph1[id][i].second;
if(!vis1[graph1[id][i].first]||len<dis1[graph1[id][i].first])
{
dis1[graph1[id][i].first]=len;
vis1[graph1[id][i].first]=true;
q.push(graph1[id][i].first);
}
}
}
q.push(X);
while(!q.empty())
{
id=q.front();
q.pop();
cnt=graph2[id].size();
for(i=;i<cnt;i++)
{
len=dis2[id]+graph2[id][i].second;
if(!vis2[graph2[id][i].first]||len<dis2[graph2[id][i].first])
{
dis2[graph2[id][i].first]=len;
vis2[graph2[id][i].first]=true;
q.push(graph2[id][i].first);
}
}
}
for(i=;i<=N;i++)
{
if(i==X)
continue;
ans=max(ans,dis1[i]+dis2[i]);
}
cout<<ans; return ;
}

最新文章

  1. 计划任务,机器码与注册码,Web服务
  2. php操作Memcache
  3. Lucene的分析过程
  4. 自定义宏把Word打造成全快捷键编辑器
  5. Android activity之间传值关键性代码
  6. Struts2 的ModelDriven理解
  7. Ubuntu 14.10 下Ganglia监控Hadoop集群
  8. Linux批量杀进程
  9. BZOJ 3173 [Tjoi2013] 最长上升子序列 解题报告
  10. Linux用户与用户组,UID及GID
  11. List小练习
  12. java 对象与json互转
  13. go语言常用开源库整理
  14. 解析时间parse time
  15. JavaScript原型详解
  16. JS高级 - 面向对象1(this,Object ,工厂方式,new )
  17. 20180318 一个VS2015运行DataTable问题
  18. 《DSP using MATLAB》Problem 4.18
  19. ArcGIS10.3+Oracle12C+ArcGIS Server10.3安装布署(之一)
  20. Python简单的购物车小代码

热门文章

  1. ES6 新特性(笔记)
  2. 【剑指Offer】面试题18. 删除链表的节点
  3. UVA - 11054 Wine trading in Gergovia (Gergovia 的酒交易)(贪心+模拟)
  4. 每天一点点之 taro 框架开发 - 事件处理与样式表
  5. 10 ~ express ~ 使用 cookie 保存用户 信息
  6. Day3-T4
  7. Day2-T2
  8. Python Learning Day8
  9. bfs--P1301 魔鬼之城
  10. Condition接口及其主要实现类ConditionObject源码浅析