HDU 2112 HDU Today

经典的dijkstra算法,同时是学习map映照容器最好的样题!

一、下面先介绍dijkstra:

         (这里描述的是从节点1开始到各点的dijkstra算法,其中Wa->b表示a->b的边的权值,d(i)即为最短路径值)

  1. 置集合S={2,3,...n}, 数组d(1)=0, d(i)=W1->i(1,i之间存在边) or +无穷大(1.i之间不存在边)

  2. 在S中,令d(j)=min{d(i),i属于S},令S=S-{j},若S为空集则算法结束,否则转3

  3. 对全部i属于S,如果存在边j->i,那么置d(i)=min{d(i), d(j)+Wj->i},转2。

算法模版:

 

 

二、简单说下map容器:

       map映照容器所处理的元素数据,与数据库中的具有键值的记录非常相似,由一个键值和其它若干个数据(映照数据组成),键值和映照数据之间,可建立一个数学上的映照关系。容器的数据结构是采用红黑树进行管理,元素值不允许重复,所使用的节点元素的比较函数,只对元素的键值进行比较,元素的各个数据项可通过键值检索。简单点说就是一个数字对应一个变量值!我们要用到这个变量的值但不方便对他进行直接操作,所有想让一个变量对应一个编号,我们对编号进行操作即可!

 

三、具体结合HDU 2112这道题来出边了解下它:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值