题目:https://vjudge.net/problem/POJ-3268

One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ XN). A total of M (1 ≤ M ≤ 100,000) unidirectional (one-way roads connects pairs of farms; road i requires Ti (1 ≤ Ti ≤ 100) units of time to traverse.

Each cow must walk to the party and, when the party is over, return to her farm. Each cow is lazy and thus picks an optimal route with the shortest time. A cow's return route might be different from her original route to the party since roads are one-way.

Of all the cows, what is the longest amount of time a cow must spend walking to the party and back?

Input

Line 1: Three space-separated integers, respectively: N, M, and X
Lines 2.. M+1: Line i+1 describes road i with three space-separated integers: Ai, Bi, and Ti. The described road runs from farm Ai to farm Bi, requiring Ti time units to traverse.

Output

Line 1: One integer: the maximum of time any one cow must walk.

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

Hint

Cow 4 proceeds directly to the party (3 units) and returns via farms 1 and 3 (7 units), for a total of 10 time units.
题意:一群牛分别从1~n号农场赶往x号农场参加聚会,农场与农场之间的路时单向的,在n个农场之间有m条路,
给出 a ,b , t表示从a号农场到b号农场需要t时间。 每头牛都会选择最短的路,问来回路上(i→x+x→i)花费时间最长的牛花费的时间是多少?
思路: 正向建立图查x到各点最短路,,,,在置换mp[j][i]=mp[i][j];;再查x到各点的最短路   然后两次求得最短路相加查找最大值      (     复杂度    O(n*n)) 
 
 
 
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<set>
#include<algorithm>
#include<map>
#define maxn 200005
#define inf 100000000
using namespace std;
int dis[maxn];
int mp[1005][1005];
int n,m,x;
int v,u,cost;
bool vis[maxn];
int cnt[maxn];
void dijkstra(int n,int v)
{bool vis[maxn];for(int i=1;i<=n;i++){vis[i]=false;dis[i]=mp[v][i];}dis[v]=0;vis[v]=true;for(int i=2;i<=n;i++){int u=v;int mazz=inf;for(int j=1;j<=n;j++){if(!vis[j]&&dis[j]<mazz)//换dis最小的顶点继续查找
        {u=j;mazz=dis[j];}}vis[u]=true;for(int k=1;k<=n;k++)//更新顶点上的dis
        {if(!vis[k]&&mp[u][k]<inf){if(dis[k]>mp[u][k]+dis[u]){dis[k]=mp[u][k]+dis[u];}}}}
}
int main()
{scanf("%d%d%d",&n,&m,&x);memset(mp,inf,sizeof(mp));//memset(mp,inf,sizeof(mp));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)mp[i][j]=inf;for(int i=0;i<m;i++){cin>>u>>v>>cost;mp[u][v]=cost;}for(int i=1;i<=n;i++){dis[i]=inf;cnt[i]=inf;}dijkstra(n,x);for(int i=1;i<=n;i++){cnt[i]=dis[i];}for(int i=1;i<=n;i++){dis[i]=inf;}for(int i=1;i<=n;++i){for(int j=i+1;j<=n;++j){int aa;aa=mp[j][i];mp[j][i]=mp[i][j];mp[i][j]=aa;}}dijkstra(n,x);int ans=0;for(int i=1;i<=n;i++){if(i!=x);ans=max(ans,dis[i]+cnt[i]);}printf("%d\n",ans);
}

简单的图论思路题  ,,,不过题目挺好的

转载于:https://www.cnblogs.com/huangzzz/p/8848221.html

POJ 3268 迪杰斯特拉图论 置换找最短路相关推荐

  1. pat1003 迪杰斯特拉法和dfs求最短路

    本题的背景是求定点和定点之间的最短路问题(所有的最短路 不是一个解  是全部解,方法手段来自数据结构课程中的迪杰斯特拉算法和dfs(深度优先遍历). 分别用两种方法编程如下代码 dfs #includ ...

  2. 厕所杯交通信号,迪杰斯特拉图论python

    LQ 市的交通系统可以看成由 n 个结点和 m 条有向边组成的有向图.在每 条边上有一个信号灯, 会不断按绿黄红黄绿黄红黄... 的顺序循环 (初始时刚好 变到绿灯).当信号灯为绿灯时允许正向通行, ...

  3. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc

    图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题*/ //算法实现: #include #include #define MAX 2 ...

  4. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言)

    图的邻接表实现迪杰斯特拉算法(C语言). 迪杰斯特拉算法(狄斯奎诺算法)解决的是从源点到其它所有顶点的最短路径问题. 图的邻接表实现迪杰斯特拉算法(C语言) /*迪杰斯特拉算法(狄斯奎诺算法)解决的是 ...

  5. 图解迪杰斯特拉(Dijkstra)最短路径算法

    往期文章目录 [干货满满!][最小生成树]Prim算法 [最小生成树]Kruskal算法 目录 前言 一.最短路径的概念及应用 二.Dijkstra迪杰斯特拉 1.什么是Dijkstra 2.逻辑实现 ...

  6. 图论应用 floyd(弗洛伊德)算法、dijkstra(迪杰斯特拉)算法

    前言 图论应用是非常广泛的,不同于二叉树,二叉树是应用在数据存储结构提高查询效率的,而图论则是用在辅助决策系统中,求得最优化解的等等,而本篇文章中介绍的floyd(弗洛伊德)算法.dijkstra(迪 ...

  7. 图论(迪杰斯特拉,Floyd,bellman,spfa)

    对图论和搜索的学习感想 Dijkstra 迪杰斯特拉求最短路的暴力的思路是三重循环去更新所有点到起点的最短距离. 首先先初始化让第一个点到自己的距离是0即: dist[1]=0; 然后在省下的点中找到 ...

  8. 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)

    一.基础知识   有向图   无向图 以无向图为例: 邻接矩阵: 度矩阵(对角矩阵): 二.最小生成树 应用:将网络顶点看着城市,边看着城市之间通讯网,边的权重看着成本,根据最小生成树可以构建城市之间 ...

  9. 图论的灵魂——带你走进迪杰斯特拉算法的世界

    你好,我是小黄,一名独角兽企业的Java开发工程师. 感谢茫茫人海中我们能够相遇, 俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心来学习 希望优秀的你可以和我一起学习,一起努力,实现属于 ...

最新文章

  1. x64dbg 搜索多条指令 ( find sequence of commands )
  2. 【struts2+hibernate+spring项目实战】统一异常处理(ssh)
  3. Nutch2.1+mysql+solr3.6.1+中文网站抓取
  4. numpy如何直接在数组上进行添加_NumPy 论文登上了 Nature!
  5. Git出现Unable to create 'E:/xxx/.git/index.lock': File exists.的解决办法
  6. 虚拟现实技术利用计算机,虚拟现实技术在计算机教学的应用
  7. 最长回文子串的不同解法
  8. linux刷除U盘grub,删除linux系统出现grub rescue
  9. 38译码器数码管c语言代码,38译码器驱动数码管电路图
  10. Windows2008应用之配置客户端自动添加打印机
  11. 【Python实战】使用python计算多种类型到期还款日
  12. JSTL与JAVA数据交互 pagecontext
  13. java关闭通道_调用map方法后,Java 7文件通道未正确关闭
  14. noi 7627 鸡蛋的硬度
  15. 天正计算机命令大全,新手必看-史上最全CAD快捷键大全
  16. 【网络传输协议】RTSP即RealTimeStreamingProtocol流媒体网络传输协议
  17. 自学总结:非科班转行前端拿到字节跳动 offer?看我是如何一步一步做到的?
  18. 袋鼠云数据中台专栏(一) :浅析数据中台策略与建设实践
  19. Git!从零开始用连接远程仓库!![全平台]
  20. 观察者(observer)模式(二) —— 实现线程安全的监听器

热门文章

  1. ai3中文语音补丁_NS 暗黑破坏神3 中文补丁今日上线!刷起来
  2. python list 换位置_【已解决】Python中把list换成set
  3. FastReport 自适应列文字大小
  4. 网络推广营销之网站优化选择优质友情链接的标准
  5. 企业网络推广之下的“盒马鲜生”新零售逐渐“破圈”而出
  6. 网站推广怎样实现网站设计吸引用户注意完成网站推广指标?
  7. 友情链接优化的技巧分享
  8. 网站单页面排名提升的技巧有哪些?
  9. docker tomcat mysql_Docker下Tomcat容器中使用Mysql的方法
  10. aspose.pdf for java_Java 开发者最困惑的四件事