1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<map>
  5. #include<cstdlib>
  6. #include<vector>
  7. #include<set>
  8. #include<queue>
  9. #include<cstring>
  10. #include<string.h>
  11. #include<algorithm>
  12. typedef long long ll;
  13. typedef unsigned long long LL;
  14. using namespace std;
  15. const int maxNodeNum=1010;//最多节点个数
  16. const int maxEdgeNum=1001000;//最多边条数
  17. const int INF=0x3f3f3f3f;
  18. int n,m;//节点,有向边个数
  19. int mp[maxNodeNum][maxNodeNum];//建立邻接矩阵
  20. int dis[maxNodeNum];//dis[i]为源点到i的最短路径
  21. bool vis[maxNodeNum];//判断某个节点是否已加入集合
  22. int p[maxNodeNum];
  23. void dijkstra(int start)
  24. {
  25. memset(dis,INF,sizeof(dis));
  26. memset(vis,0,sizeof(vis));
  27. dis[start]=0;//一开始集合里没有任何点,下面的循环中,第一个找到的点肯定是源点
  28. for(int i=1;i<=n;i++){
  29. int MinNumber,Min=INF;//MinNumber为dis[]值最小的点的编号
  30. for(int j=1;j<=n;j++)
  31. {
  32. if(dis[j]<Min&&!vis[j])
  33. {
  34. Min=dis[j];
  35. MinNumber=j;
  36. }
  37. }//找到dis[]最小的点,加入集合,更新与其相连的点的dis值
  38. vis[MinNumber]=1;
  39. for(int j=1;j<=n;j++)
  40. if(dis[MinNumber]+mp[MinNumber][j]<dis[j])
  41. dis[j]=dis[MinNumber]+mp[MinNumber][j];
  42. }
  43. }
  44. int DFS(int s)
  45. {
  46. if(p[s]) return p[s];
  47. if(s==2) return 1;
  48. int i,sum=0;
  49. for(i=1;i<=n;i++)
  50. {
  51. if(mp[s][i]<INF&&dis[s]>dis[i])
  52. {
  53. if(p[i]) sum=sum+p[i];
  54. else sum=sum+DFS(i);
  55. }
  56. }
  57. sum=sum+p[s];
  58. p[s]=sum;
  59. return p[s];
  60. }
  61. int main()//109MS
  62. {
  63. while(scanf("%d%d",&n,&m)!=EOF)
  64. {
  65. if(n==0)break;
  66. int a,b,c;
  67. memset(mp,INF,sizeof(mp));
  68. for(int i=1;i<=m;i++)
  69. {
  70. scanf("%d%d%d",&a,&b,&c);
  71. if(c<mp[a][b])
  72. mp[a][b]=mp[b][a]=c;
  73. }
  74. dijkstra(2);
  75. memset(p,0,sizeof(p));
  76. cout<<DFS(1)<<endl;
  77. }
  78. return 0;
  79. }

hdu 1142(DFS+dijkstra)的更多相关文章

  1. Bomb HDU - 3555 (数位DP)

    Bomb HDU - 3555 (数位DP) The counter-terrorists found a time bomb in the dust. But this time the terro ...

  2. 素数环(dfs+回溯)

    题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ...

  3. UVA 291 The House Of Santa Claus(DFS算法)

    题意:从 节点1出发,一笔画出 圣诞老人的家(所谓一笔画,就是遍访所有边且每条边仅访问一次). 思路:深度优先搜索(DFS算法) #include<iostream> #include&l ...

  4. 历届试题 邮局(dfs+剪枝)

      历届试题 邮局   时间限制:1.0s   内存限制:256.0MB      问题描述 C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流.为了方便村民们发信,C村打算在C村建设k ...

  5. POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE

    POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ...

  6. 线段树扫描线(一、Atlantis HDU - 1542(覆盖面积) 二、覆盖的面积 HDU - 1255(重叠两次的面积))

    扫描线求周长: hdu1828 Picture(线段树+扫描线+矩形周长) 参考链接:https://blog.csdn.net/konghhhhh/java/article/details/7823 ...

  7. HDU 1010 Tempter of the Bone (DFS+剪枝)

    题意:从S走到D,能不能恰好用T时间. 析:这个题时间是恰好,并不是少于T,所以用DFS来做,然后要剪枝,不然会TEL,我们这样剪枝,假设我们在(x,y),终点是(ex,ey), 那么从(x, y)到 ...

  8. 【HDU - 1010】Tempter of the Bone(dfs+剪枝)

    Tempter of the Bone 直接上中文了 Descriptions: 暑假的时候,小明和朋友去迷宫中寻宝.然而,当他拿到宝贝时,迷宫开始剧烈震动,他感到地面正在下沉,他们意识到这是一个陷阱 ...

  9. HDOJ-1010 Tempter of the Bone(dfs+剪枝)

    http://acm.hdu.edu.cn/showproblem.php?pid=1010 给出一个n*m的迷宫 X为墙 .为空地 S为起点 D为终点 给出时间T 每走一步花费一单位的时间 走过的空 ...

随机推荐

  1. apche 虚拟主机设置

    <要求>:两个不同的域名 www.got7.com 和www.wgayi.com 指向同一个IP地址当在浏览器中输入不同的域名时.对应不同的网站根目录 备注:域名got7,wgayi,纯属 ...

  2. WEB测试方法及注意地方

    1页面部分(1) 页面清单是否完整(是否已经将所需要的页面全部都列出来了)(2) 页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是是否显示)(3) 页面在窗口中的显示是否正确.美观( ...

  3. js中原型的概念

  4. Angularjs学习笔记(二)----模块

    一.定义 如何将全局定义的控制器模块化 先看下全局定义的控制器 var HelloCtrl=function($scope){ $scope.name='World'; } 模块化后代码 angula ...

  5. 安装oracle ebs 出现问题 atleast 55M of disk space

    出现这个问题 可以进行如下尝试: 1.登陆用户是否具有管理员权限,可以右击exe用管理员登陆. 2.安装电脑是否有安装mcafee,可以禁用后运行. 3.看下C:\Documents and Sett ...

  6. [学习笔记]JS中闭包的理解

    一.闭包概念的理解 闭包,又称为词法闭包或函数闭包指引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外. 自由变量:该变量既不是函数本身定义的也不是函数 ...

  7. jquery EasyUI datagrid 的扩展

    接触 easyui 半年,js学的不深.大神请路过. 直接扩展 添加方法: $.extend($.fn.datagrid.methods, { getSelectedIndex: function ( ...

  8. C# 根据类名称创建类示例

    //获得类所在的程序集名称(此处我选择当前程序集) string bllName = System.IO.Path.GetFileNameWithoutExtension(System.Reflect ...

  9. lua 学习笔记一

    参考: http://www.kancloud.cn/digest/luanote/119924 1.基础概念 1.lua八种基本数据类型:nil.boolean.string.function.ta ...

  10. java程序故障排查脚本之——CPU占用高

    root@ubuntu-B85M-D3H:~/tmp# cat java_Analy.sh #!/bin/bash T=`ps -mp $1 -o THREAD,tid,time|sort -k 2 ...