题目链接


题目大意:

一个单向图,先输入n个点,m条边,k次询问。接下来m行输入相连点的边和距离,然后输入k次询问。输入0,x,表示标记x点,输入1,x,y,表示询问点x到点y的距离。只能走已标记的点。如果标记的点已标记 输出 ERROR! At point x,如果询问距离的两点有未标记的,输出 ERROR! At path x to y,如果都标记了,但是走不通,则输出 No such path,否则输出两点之间的距离。

floyd的灵活运用,直接用新标记的点更新,避免了O(n∗n∗n)O(n*n*n)O(n∗n∗n)


解题思路:

我们知道floyed 的外层循环是kkk,表示当前的最短路网络里面所以i和ji和ji和j之间的最短路都是经过[1,k−1][1,k-1][1,k−1]里面的点的
那么我们知道外面实际上就是一个中转点,其实这道题就是每次加入一个中转点去跟新里面的最短路网络!!


#include <iostream>
#include <cstdio>
#include <cstring>
#define INF 0x3f3f3f3f
using namespace std;
int n,m,k;
int map[305][305];
int vis[305];
void floyd(int k)  ///新插入的点
{int i,j;for(i=0; i<n; i++)for(j=0; j<n; j++)if(map[i][j]>map[i][k]+map[k][j])map[i][j]=map[i][k]+map[k][j];
}
int main()
{int cas=1,i,j;while(~scanf("%d%d%d",&n,&m,&k)){if(n==0&&m==0&&k==0)break;memset(vis,0,sizeof(vis));for(i=0; i<n; i++)for(j=0; j<n; j++)if(i==j) map[i][j]=0;else     map[i][j]=INF;int a,b,c;while(m--){scanf("%d%d%d",&a,&b,&c);if(map[a][b]>c)map[a][b]=c;}if(cas!=1)printf("\n");printf("Case %d:\n",cas++);int x,y;while(k--){scanf("%d",&c);if(c){scanf("%d%d",&x,&y);if(vis[x]&&vis[y]){if(map[x][y]!=INF)printf("%d\n",map[x][y]);elseprintf("No such path\n");}elseprintf("ERROR! At path %d to %d\n",x,y);}else{scanf("%d",&x);if(vis[x])printf("ERROR! At point %d\n",x);else{vis[x]=1;floyd(x);}}}}return 0;
}

图论500 ---- HDU3631 Shortest Path Floyed 插点法 真正了解Floyed相关推荐

  1. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  2. 4kyu Path Finder #2: shortest path

    4kyu Path Finder #2: shortest path 题目背景: Task You are at position [0, 0] in maze NxN and you can onl ...

  3. 程序员的算法课(19)-常用的图算法:最短路径(Shortest Path)

    一.最短路径问题 [google笔试题]一个环形公路,给出相邻两点的距离(一个数组),求任意两点的最短距离,要求空间复杂度不超过O(N). 如果从有向图中某一顶点(称为源点)到达另一顶点(称为终点)的 ...

  4. P - The Shortest Path in Nya Graph HDU - 4725

    P - The Shortest Path in Nya Graph HDU - 4725 最短路 不是 每两个点之间按层数设置边权 + 额外边权 TLE 是 相邻两层之间设置边权 + 额外边权 需注 ...

  5. [CF843D]Dynamic Shortest Path

    [CF843D]Dynamic Shortest Path 题目大意: 给定一个带权有向图,包含\(n(n\le10^5)\)个点和\(m(m\le10^5)\)条边.共\(q(q\le2000)\) ...

  6. zoj 2760 How Many Shortest Path 最大流

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...

  7. OSPF(Open Shortest Path First开放式最短路径优先)

    **协议** OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(a ...

  8. AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_C All Pairs Shortest Path Input ...

  9. AOJ GRL_1_B: Shortest Path - Single Source Shortest Path (Negative Edges) (Bellman-Frod算法求负圈和单源最短路径)

    题目链接: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_B Single Source Shortest Path ( ...

最新文章

  1. Kibana查询说明
  2. 请说明一下Spring中BeanFactory和ApplicationContext的区别是什么?
  3. c/c++ base64编码后,通过php解码,中文乱码解决办法
  4. bkwin设置文本控件为多行模式
  5. 纪中B组模拟赛总结(2020.2.13)
  6. 越是被吐槽,女博士这个群体就越强!!
  7. 《学习之道》第六章习惯的部分-反应程序
  8. .NET 环境下进制间的转换
  9. Struts2框架的概念及使用方法
  10. 新课改计算机论文,新课改中职计算机职业教育论文
  11. Ubuntu 18.04安装i686-elf交叉编译工具链的方法
  12. 林文信12小时学会流行键盘基础教程-爱奇艺链接地址
  13. mysql 右连接(right join)
  14. 猿创征文|三维重建领域的开发者工具箱
  15. 大数据分析方法:定性研究还是定量研究
  16. System.IO.FileNotFoundException: Could not load file or assembly ‘System.Data.SQLite.dll‘ or one of
  17. 【影像组学】理论学习——特征类型
  18. 天龙八部服务器列表文件,TLBB服务端目录文件作用
  19. 等腰杨辉三角C语言实现
  20. 频繁撤单有风险?--这些委托类型让您享受“撤单豁免权”

热门文章

  1. 深度学习神经网络 端到端的学习方式
  2. 你不知道的车牌识别系统
  3. 使用Python+OpenCV+yolov5实现行人目标检测
  4. nodejs-7. mongoDB数据库
  5. 同源注释工具GeneWise安装和使用
  6. 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
  7. sqlmap 常用操作
  8. 【SpringMVC】与权限拦截器冲突导致的Cors跨域设置失效问题
  9. 解决Ubuntu 14.04 Unity桌面环境登录后冻结问题
  10. KVM精简教程(一):安装KVM