传送门
// 题意: 给定一个矩阵表示点与边的关系, 有向边, 并且每个点有税收, 起点和终点不收税. 然后给出一系列的询问, st 到 ed的最短路是多少, 并且要输出该路径, 特别注意就是如果有同样的答案的最短路, 输出字典序最小的那条.
// 思路: 首先还是最短路, 那么注意几个问题, 一是在结构体中加string name, 不能单纯的以前面那个点来排, 因为有可能小的在前面, 所以我们应该吧前面所选过的全部先存下来, 去总的最小, 而不是前面的那个最小. 其次就是如果有相等距离的, 我们应该比较下它上次取该值的字典序和当前的进行一次比较, 如果更小依旧要进行更新. 具体细节请看代码.
几个坑点 :
1:
6
0 100 100 100 1 1
100 100 100 1 100 100
100 100 100 1 100 100
100 100 100 100 100 100
100 100 1 100 100 100
100 1 100 100 100 100
0 0 0 0 0 0
1 4
-1 -1
ans : 1->5->3->4
2:
3
0 2 4
-1 0 1
-1 -1 0
1 1 1
1 3
1 1
-1 -1
ans: 1 -> 2 -> 3
3: 自己到自己输出 st, 而不是st -> st.
这几个都能过就没有问题了.
AC Code
const int inf = 0x3f3f3f3f; //用这个可以直接mem
const int maxn = 50+5;
int cas=1;
int cnt, head[maxn];
int g[maxn][maxn];
struct node
{
<