这道题就不贴题目了,主要问题在于对输入数据的处理,Dijkstra不会存在太多的难度。
这道题目的输入是地点名,怎么样将字符串转化成数字并作为一个查找依据,这是这道题所要解决的问题,看过别人的解体思路,发现了一个很好用的STL类,map,这个类是利用红黑树将一种数据映射为另一种数据类型,在这里我们就可以将字符串string类型映射为int型。
在Dijkstra的过程中,利用到了STL中的priority_queue,即优先队列,利用该队列以结点到树的距离为判断依据进行优先级排列,将优先级最高,即到树的距离最小的结点。再对该结点进行扩展并加入到队列中,实现中类似于广度优先搜索,只是这里是有选择的扩展。
具体实现过程可见程序代码:(由于也是借鉴了网上的代码,即将别人的代码贴上来了,感觉这个代码写得还是比较清晰的)