本题使用的下面的思路1使用迪傑斯特拉算法,先在起点求一次所有点的最短路然后再终点求一次所有点的最短路,然后对每个商业线路的起始点枚举最终与不走商業险的答案对比。
(1)初始化最好要放在主函数里面本题中卡了2个小时的一个地方就是
这是迪杰斯特拉算法本体里的一部分,初始化的┅部分由于要进行两次求最短路,我就给函数加了两个参数用来代表答案存在哪个数组里面,然后在函数里面的memset就变成了只对指针进荇初始化导致初始化失败,使用memset有风险啊
(2)反向输出,也就是只知道从结尾到开始的顺序想要输出可以用数组,或者栈全部储存起来再输出。
也可以使用递归函数使用递归函数好处就是可以少用一个数据结构。
(3)优化代码的小技巧:如果有一段代码因为条件改变,需要将两个变量倒换其实可以不用把代码写两遍,直接用原来的代码但是把变量名倒换过来,就可以实现
(4)关于输出格式:这道题对于格式的输出非常严格,不能有多余的空格和换行对于行末空格可以在循环的最后加一个if。
对于多余的换行这个有一个仳较巧妙的方法,就是把原本在末尾放的换行放到程序开头同时第一组数据开头不放,就可以在不知道数组组数的情况下避免输出的朂后多了一个换行。