题目链接:http://poj.org/problem?id=2353
题目大意:有M层楼,每层楼有N个房间,每次到一个房间都有一个花费,有三个规定,1,你需要从第一层开始走,2,房间号相同时,才能上下移动,3,相邻的房间,可以互相通往,要求你求从第一层开始,到最后一层,所花费的最小代价。输出所经过的房间的房间号。
思路:这个题我觉得主要考察的是如何建图,其实图也不难建,就是有点小麻烦,有很多地方也需要注意。建图只需要按照题目规定的,上下房间连通,相邻的房间连通,建立一个图(建图的时候用vector建会超时,所以我用的链式前向星建的图),建完图后直接跑dijkstra就行了,还有就是,这个题没有固定的出发点和终点,需要自己想象一个出发点和终点,出发点都连到一层楼房间上,所有最后一层房间都连通到重点,然后跑dijkstra的时候存一下点,最后输出这些点就ok了。
代码:
1 #include
2 #include
3 #include
4 #include
5 #include<string>
6 #include
7 #include