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

题目大意:

n个农场的n头奶牛将前往x农场,要选择一条来回时间最短的路径。

(一头牛的返回路线可能不同于她最初去派对的路线,因为道路是单向的。)

思路:

//有向图的迪杰斯特拉

如果以每头牛为起点遍历其到x的最短路,耗时太大。

有没有简便的方法呢?

如果,以x为起点,找到其余点的最短路,这求出的便是牛返回各自农场的最短路,

由于还要求牛前往x农场的最短路,

我们可以想到一个巧妙的方法:将所有的方向反向,再求一遍以x为起点,找到其余点的最短路。

所以就是在最短路的代码上加一个反向最短路。

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<algorithm>
  4. #include<string.h>
  5. #define maxn 1005
  6. #define inf 0x3f3f3f3f
  7. using namespace std;
  8. int cost[maxn][maxn],n,m,x;
  9. int disback[maxn],discome[maxn];
  10. bool vis[maxn];
  11. int dij(int x)
  12. {
  13. int u,minn;
  14. for(int i=;i<=n;i++)
  15. {
  16. disback[i]=cost[x][i];
  17. discome[i]=cost[i][x];//将各边反转
  18. }
  19. for(int i=;i<n;i++)
  20. {
  21. u=-,minn=inf;
  22. for(int j=;j<=n;j++)
  23. {
  24. if(!vis[j]&&disback[j]<minn)
  25. {
  26. u=j;
  27. minn=disback[j];
  28. }
  29. }
  30. //if(u=-1)return
  31. vis[u]=;
  32. for(int v=;v<=n;v++)
  33. {
  34. if(!vis[v]&&cost[u][v]!=inf)
  35. {
  36. if(disback[u]+cost[u][v]<disback[v])
  37. disback[v]=disback[u]+cost[u][v];
  38. }
  39. }
  40. }
  41. memset(vis,,sizeof vis);
  42. for(int i=;i<n;i++)
  43. {
  44. minn=inf,u=-;
  45. for(int j=;j<=n;j++)
  46. {
  47. if(!vis[j]&&discome[j]<minn)
  48. {
  49. u=j;
  50. minn=discome[j];
  51. }
  52. }
  53. vis[u]=;
  54. for(int j=;j<=n;j++)
  55. {
  56. if(!vis[j]&&cost[j][u]+discome[u]<discome[j])
  57. discome[j]=cost[j][u]+discome[u];
  58. }
  59. }
  60. minn=-;
  61. for(int i=;i<=n;i++)
  62. minn=max(minn,discome[i]+disback[i]);
  63. return minn;
  64. }
  65. int main()
  66. {
  67. int i,a,b,c,j;
  68. while(~scanf("%d%d%d",&n,&m,&x))
  69. {
  70. for(i=;i<=n;i++)
  71. for(j=;j<=n;j++)
  72. {
  73. if(i!=j)
  74. cost[i][j]=inf;
  75. else
  76. cost[i][j]=;
  77. }
  78. for(i=;i<m;i++)
  79. {
  80. scanf("%d%d%d",&a,&b,&c);
  81. cost[a][b]=c;
  82. }
  83. printf("%d\n",dij(x));
  84. }
  85. return ;
  86. }

POJ3268(Dijkstra_邻接矩阵)的更多相关文章

  1. HDU2544(dijkstra_邻接矩阵最水的题没有之一)

    https://cn.vjudge.net/problem/HDU-2544 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场 ...

  2. POJ-3268 Silver Cow Party---正向+反向Dijkstra

    题目链接: https://vjudge.net/problem/POJ-3268 题目大意: 有编号为1-N的牛,它们之间存在一些单向的路径.给定一头牛的编号X,其他牛要去拜访它并且拜访完之后要返回 ...

  3. poj-3268最短路

    title: poj-3268最短路 date: 2018-10-13 15:54:34 tags: acm 刷题 categories: ACM-最短路 概述 这是一道最短路的模板题,,,不过虽然是 ...

  4. 邻接矩阵的深度优先遍历(java版)

    这是一个有向边带权的图 顶点数组:[v0, v1, v2, v3, v4] 边数组: v0 v1 v2 v3 v4 v0 6 v1 9 3 v2 2 5 v3 1 v4 package com.dat ...

  5. 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1

    import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...

  6. 邻接矩阵有向图(三)之 Java详解

    前面分别介绍了邻接矩阵有向图的C和C++实现,本文通过Java实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:h ...

  7. 邻接矩阵有向图(二)之 C++详解

    本章是通过C++实现邻接矩阵有向图. 目录 1. 邻接矩阵有向图的介绍 2. 邻接矩阵有向图的代码说明 3. 邻接矩阵有向图的完整源码 转载请注明出处:http://www.cnblogs.com/s ...

  8. 邻接矩阵有向图(一)之 C语言详解

    本章介绍邻接矩阵有向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...

  9. 邻接矩阵无向图(三)之 Java详解

    前面分别介绍了邻接矩阵无向图的C和C++实现,本文通过Java实现邻接矩阵无向图. 目录 1. 邻接矩阵无向图的介绍 2. 邻接矩阵无向图的代码说明 3. 邻接矩阵无向图的完整源码 转载请注明出处:h ...

随机推荐

  1. struts2 上传下载文件,异常处理,数据类型转换

    一,web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=" ...

  2. PoPo数据可视化周刊第6期

    PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 本期可视化精彩视频请关注公众号浏览 全天智能获Pre-A ...

  3. Keras vs. PyTorch

    We strongly recommend that you pick either Keras or PyTorch. These are powerful tools that are enjoy ...

  4. url override and HttpSession implements session

    背景 HttpSession默认使用Cookie存储Session ID,如果在用户禁用浏览器Cookie的功能后,仍打算运用HttpSession来进行会话管理,那么可以搭配URL重写来实现. 实现 ...

  5. textarea高度跟随文字高度而变化

    html部分: <textarea id="textarea">哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽哈喽</textarea> js部分: < ...

  6. 【转】SSL协议详解

    作者:朱祁林 出处:http://zhuqil.cnblogs.com 原文链接 背景介绍    最近在看<密码学与网络安全>相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL. ...

  7. tomcat报错相关问题

    action1:tomcat7w.exe里面path to executable不是当前所用的tomcat(可执行文件路径是你以前使用过的tomcat路径,导致启动服务报错:找不到可执行文件) 解决办 ...

  8. 软工读书笔记 week 8 —— 《疯狂的程序员》

    这次接着上一次的进度继续阅读,并将其中感悟较深的几点记录如下.      程序员是一个幕后工作者 书中绝影给医院写软件,而医生(用户)只是评价这个软件好不好用,而不会去评价写这个软件的程序员优不优秀. ...

  9. spring boot(9)-mybatis关联映射

    一对多 查询type表的某一条数据,并且要同时查出所有typeid与之配置的user,最终要得到一个以下类型的Type对象 public class Type { String id; String ...

  10. Spring 集成 Ehcache 开启缓存

    1.jar包 1.1.slf4j-api-1.6.1.jar 1.2.ehcache-2.7.0.jar 1.3.spring-core-3.2.0.RELEASE.jar 1.4.spring-co ...