这个题得主要考点在于给你的图是去了再回来得有向图,如何模块化解决呢就是转变图的方向,我们根据初始得放心求出每个点到x得最短路,然后转变所有路得方向再求出所有点到x得最短路,最后一相加就是最后的来回了~~
实现得时候我用到了数组指针,感觉非常得方便

#include <iostream>
#include <string.h>
#include <cstdio>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn = 1010;
int mp[maxn][maxn];
int remp[maxn][maxn];
int dis[maxn];
int redis[maxn];
int vis[maxn];
int n,m,x;
void init(int n)
{
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
if(i == j)
{
mp[i][j] = 0;
remp[i][j] = 0;
}
else
{
mp[i][j] = inf;
remp[i][j] = inf;
}
}
}
}
void Dijkstra(int s,int (*p)[1010],int *d)
{
for(int i = 1;i <= n;i++)
{
d[i] = p[s][i];
vis[i] = 0;
}
vis[s] = 1;
for(int i = 1;i <= n;i++)
{
int minlen = inf,net = 0;
for(int j = 1;j <= n;j++)
{
if(!vis[j] && d[j] < minlen)
{
minlen = d[j];
net = j;
}
}
if(net == 0)break;
vis[net] = 1;
for(int j = 1;j <= n;j++)
{
if(!vis[j])
{
d[j] = min(d[j],d[net] + p[net][j]);
}
}
}
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&x))
{
init(n);
int a,b,l;
while(m--)
{
scanf("%d%d%d",&a,&b,&l);
if(mp[a][b] > l)
{
mp[a][b] = l;
remp[b][a] = l;
}
}
Dijkstra(x,mp,dis);
Dijkstra(x,remp,redis);
int ans = 0;
for(int i = 1;i <= n;i++)
{
ans = max(ans,dis[i] + redis[i]);
}
printf("%d\n",ans);
}
return 0;
}

来回最短路POJ3268的更多相关文章

  1. POJ-3268(来回最短路+dijkstra算法)

    Silver Cow Party POJ-3268 这题也是最短路的模板题,只不过需要进行两次求解最短路,因为涉及到来回的最短路之和. 该题的求解关键是:求解B-A的最短路时,可以看做A是起点,这就和 ...

  2. Uva 10806 来回最短路,不重复,MCMF

    题目链接:https://uva.onlinejudge.org/external/108/10806.pdf 题意:无向图,从1到n来回的最短路,不走重复路. 分析:可以考虑为1到n的流量为2时的最 ...

  3. POJ 2135 Farm Tour &amp;&amp; HDU 2686 Matrix &amp;&amp; HDU 3376 Matrix Again 费用流求来回最短路

    累了就要写题解,近期总是被虐到没脾气. 来回最短路问题貌似也能够用DP来搞.只是拿费用流还是非常方便的. 能够转化成求满流为2 的最小花费.一般做法为拆点,对于 i 拆为2*i 和 2*i+1.然后连 ...

  4. POJ1511来回最短路

    POJ1511 问你从1到其它点得所有最短路之和  与  其他点到1得所有最短路之和 得总和 思路很明确就是两次最短路,翻转一次地图就好了 一开始就是两次spfa之间处理好数据得更新管理就好 vect ...

  5. POJ2135 来回最短路(简单费用流)

    题意:       就是从1走到n然后再走回来,一条边只能走一次,要求路径最短. 思路:       比较水,可以直接一遍费用流,不解释了,具体的看看代码,敲这个题就是为了练 练手,好久不敲了,怕比赛 ...

  6. poj3268 Silver Cow Party(两次SPFA || 两次Dijkstra)

    题目链接 http://poj.org/problem?id=3268 题意 有向图中有n个结点,编号1~n,输入终点编号x,求其他结点到x结点来回最短路长度的最大值. 思路 最短路问题,有1000个 ...

  7. 【转】最短路&差分约束题集

    转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...

  8. kuangbin带你飞 最短路 题解

    求一个图最短路边的办法.好像下面的那个有问题.单向边和双向边一定是有区别的.这个比较容易.参照该文的最短路网络流题目和连通图题目一题求最短路关节边 另外上述2个题目的代码好像有问题. 在UVALIVE ...

  9. 转载 - 最短路&差分约束题集

    出处:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548    A strange lift基础最短路(或bfs)★ ...

随机推荐

  1. Chi-Square Statistic/Distribution

    . 1.What is a Chi Square Test? 卡方检验有两种类型.两者使用卡方统计量和分布的目的不同. 第一种:卡方拟合优度检验确定样本数据是否与总体匹配.(这里不介绍) 第二种:独立 ...

  2. Retrofit2.0+RxJava2.0问题

    问题1:java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path ...

  3. 使用git提交代码到GitHub

    0.下载Git Bash,在Windows系统可以用Git Bash通过简单的命令将代码提交到GitHub1.打开项目所在的文件夹,右键,"Git Bash Here"2.初次使用 ...

  4. 第五章 二叉树(d)二叉树实现

  5. 关于block元素和inline元素

    呃...这个会不会太基础了.最近在复习,所以基础知识也不能够忽略. 根据HTML 4.01 规范,其描述如下(http://www.w3.org/TR/html401/struct/global.ht ...

  6. git设置别名alias

    每次用git拉去版本库都很烦,特别是要从非origin源,非master分支, 例如 git pull gitlab mybranch ,这样很蛋疼. 1.写个sh去处理 2.可以通过git的别名设置 ...

  7. IIS6.0创建新网站后,浏览显示需输入用户名和密码

    1.首先我们需要创建一个用于匿名访问的账号. 我的电脑右键,电脑管理->本地用户和组->用户->新用户 注意勾选(用户不能更改密码和密码永不过期这两项)   2.右键新创建的用户-& ...

  8. java 同步

    本文主要记录java进行同步的方案及锁优化的方法,来自<深入理解jvm> 定义 线程安全:多线程访问一个对象时,不用考虑这些线程在运行时环境下的调度与交替执行,也不需要额外的同步或调用方进 ...

  9. Codeforces 689B. Mike and Shortcuts SPFA/搜索

    B. Mike and Shortcuts time limit per test: 3 seconds memory limit per test: 256 megabytes input: sta ...

  10. gruop by报错this is incompatible with sql_mode=only_full_group_by

    set @@GLOBAL.sql_mode=''; set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_ ...