1. /*
  2. 一张有20个顶点的图上。
  3. 依次输入每个点与哪些点直接相连。
  4. 并且多次询问两点间,最短需要经过几条路才能从一点到达另一点。
  5.  
  6. bfs 水过
  7. */
  8. #include<iostream>
  9. #include<cstring>
  10. #include<vector>
  11. #include<cstdio>
  12. #include<queue>
  13. using namespace std;
  14.  
  15. struct node{
  16. int x, step;
  17. node(){
  18.  
  19. }
  20. node(int x, int step){
  21. this->x=x;
  22. this->step=step;
  23. }
  24. };
  25.  
  26. vector<int>v[];
  27. queue<node>q;
  28. int vis[];
  29.  
  30. int b, e;
  31.  
  32. void bfs(){
  33. while(!q.empty()) q.pop();
  34. node cur;
  35. q.push(node(b, ));
  36. while(!q.empty()){
  37. cur=q.front();
  38. q.pop();
  39. if(cur.x==e){
  40. printf("%2d to %2d: %d\n", b, e, cur.step);
  41. return;
  42. }
  43. int len=v[cur.x].size();
  44. for(int i=; i<len; ++i){
  45. if(v[cur.x][i]==e){
  46. printf("%2d to %2d: %d\n", b, e, cur.step+);
  47. return;
  48. }
  49. if(!vis[v[cur.x][i]]){
  50. vis[v[cur.x][i]]=;
  51. q.push(node(v[cur.x][i], cur.step+));
  52. }
  53. }
  54. }
  55. }
  56.  
  57. int main(){
  58. int n, u;
  59. int cnt=;
  60. while(scanf("%d", &n)!=EOF){
  61. while(n--){
  62. scanf("%d", &u);
  63. v[].push_back(u);
  64. v[u].push_back();
  65. }
  66. for(int i=; i<=; ++i){
  67. scanf("%d", &n);
  68. while(n--){
  69. scanf("%d", &u);
  70. v[i].push_back(u);
  71. v[u].push_back(i);
  72. }
  73. }
  74. scanf("%d", &n);
  75. printf("Test Set #%d\n", ++cnt);
  76. while(n--){
  77. scanf("%d%d", &b, &e) ;
  78. bfs();
  79. memset(vis, , sizeof(vis));
  80. }
  81. printf("\n");
  82. for(int i=; i<=; ++i)
  83. v[i].clear();
  84.  
  85. }
  86. return ;
  87. }
  1. /*
  2. Floyd 才是正解!
  3. */
  4. #include<iostream>
  5. #include<cstring>
  6. #include<vector>
  7. #include<cstdio>
  8. #include<queue>
  9. #define INF 0x3f3f3f3f
  10. using namespace std;
  11.  
  12. int map[][];
  13.  
  14. void Folyd(){
  15. for(int k=; k<=; ++k)
  16. for(int i=; i<=; ++i)
  17. for(int j=; j<=; ++j)
  18. if(map[i][j] > map[i][k] + map[k][j])
  19. map[i][j] = map[i][k] + map[k][j];
  20. }
  21.  
  22. int main(){
  23. int n, u, b, e;
  24. int cnt=;
  25. while(scanf("%d", &n)!=EOF){
  26. memset(map, 0x3f, sizeof(map));
  27. while(n--){
  28. scanf("%d", &u);
  29. map[][u]=map[u][]=;
  30. }
  31. for(int i=; i<=; ++i){
  32. scanf("%d", &n);
  33. while(n--){
  34. scanf("%d", &u);
  35. map[u][i]=map[i][u]=;
  36. }
  37. }
  38. scanf("%d", &n);
  39. printf("Test Set #%d\n", ++cnt);
  40. Folyd();
  41. while(n--){
  42. scanf("%d%d", &b, &e) ;
  43. printf("%2d to %2d: %d\n", b, e, map[b][e]);
  44. }
  45. printf("\n");
  46. }
  47. }

uva oj 567 - Risk(Floyd算法)的更多相关文章

  1. 【Audiophobia UVA - 10048 】【Floyd算法】

    题目大意:从a城市到b城市的路径中,尽可能让一路上的最大噪音最小. 题目思路:设d [ i ][ j ]表示 i 到 j 的最大噪音的最小值. 那么d [ i ][ j ] = min( d[ i ] ...

  2. [Swust OJ 412]--医院设置(floyd算法)

    题目链接:http://acm.swust.edu.cn/problem/412/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  3. Calling Circles(UVa 247)(Floyd 算法)

    用Floyd算法求出传递闭包,然后用dfs求出每条连通分量.注意其中用到的几个小技巧: #include<cstdio> #include<iostream> #include ...

  4. 【uva 10048】Audiophobia(图论--Floyd算法)

    题意:有一个N点M边的无向带权图,边权表示路径上的噪声值.有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值.(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径 ...

  5. UVa 10048 - Audiophobia(Floyd变形)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. 图论篇3——最短路径 Dijkstra算法、Floyd算法

    最短路径 问题背景:地图上有很多个城市,已知各城市之间距离(或者是所需时间,后面都用距离了),一般问题无外乎就是以下几个: 从某城市到其余所有城市的最短距离[单源最短路径] 所有城市之间相互的最短距离 ...

  7. 最短路径之Floyd算法

    Floyd算法又称弗洛伊德算法,也叫做Floyd's algorithm,Roy–Warshall algorithm,Roy–Floyd algorithm, WFI algorithm. Floy ...

  8. 最短路径—Dijkstra算法和Floyd算法

    原文链接:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 最后边附有我根据文中Dijkstra算法的描述使用jav ...

  9. 最短路径问题——floyd算法

    floyd算法和之前讲的bellman算法.dijkstra算法最大的不同在于它所处理的终于不再是单源问题了,floyd可以解决任何点到点之间的最短路径问题,个人觉得floyd是最简单最好用的一种算法 ...

随机推荐

  1. JTA 深度历险 - 原理与实现

    转自http://www.ibm.com/developerworks/cn/java/j-lo-jta/ 在 J2EE 应用中,事务是一个不可或缺的组件模型,它保证了用户操作的 ACID(即原子.一 ...

  2. ubuntu安装日文分词软件MeCab及其Python插件

    1.从官网上下载三个包: http://taku910.github.io/mecab/ mecab-0.996 mecab-0.996.tar.gz mecab-ipadic-2.7.0-20070 ...

  3. hdoj 1022 Train Problem I

    #include<stdio.h> int main() { int n,i,j,k; ],]; ]; while(scanf("%d %s %s",&n,in ...

  4. myrocks 之数据字典

    data dictionary rocksdb作为mysql的一个新的存储引擎,在存储引擎层,会维护自已的元数据信息.在innodb存储引擎中,我们通过information_schema下的INNO ...

  5. PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制

    2013年10月06日最新整理. PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制 微信公共平台消息主动推送接口一直是腾讯的私用接口,相信很多朋友都非常想要用到这个功能. 通过学习 ...

  6. 淘宝上倒卖新浪微盘事件来龙去脉——谈谈巧用IMEI

    这是一个老黄历的事件,曾记得淘宝上的卖家卖10元卖50g网络硬盘,并且卖的相当的火,一个月就卖了500个账号.由于我也是那个事件的亲身经历者之一,这里就看到了IMEI号在项目中防止作弊是何其的重要. ...

  7. Asp.net web form url route使用总结

    asp.net web form 使用URL路由 注不是mvc中的路由 一.前台控件使用路由,通过表达式生成url地址,注意给路由参数赋值,防止使用了其他路由表达式值方式1:<asp:Hyper ...

  8. ENode 2.0 - 第一个真实案例剖析-一个简易论坛(Forum)

    前言 经过不断的坚持和努力,ENode 2.0的第一个真实案例终于出来了.这个案例是一个简易的论坛,开发这个论坛的初衷是为了验证用ENode框架来开发一个真实项目的可行性.目前这个论坛在UI上是使用了 ...

  9. 设计模式之美:Object Pool(对象池)

    索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):实现 DatabaseConnectionPool 类. 实现方式(二):使用对象构造方法和预分配方式实现 ObjectPool ...

  10. Javascript事件模型系列(三)jQuery中的事件监听方式及异同点

    作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery>开始,到现在使用jQuery有一年 ...