解析
“bug总有de完的一天”
头疼
暴力写的话本题显然复杂度是假的
有一个很好的思路优化时间复杂度
先用dp[k][i]表示**从第k个关键点到任意i点的最短路
跑k遍 SPFA或迪杰斯特拉 即可
然后转移时可以只考虑关键点
使状态转移数大大降低
细节
头真疼
边界条件:
if((st^1<<(id[pl]-1))==0){return f[id[s]][pl];}
从这里也可以看出也需要预处理一下s的最短路
那就加在后面也求一下即可
bug
!!!
1.有向图!!!(惯性思维了)
2.这个距离不是对称的!!!
3.本题每条边不一定只跑一遍,所以要开longlong,而且最大值也要大一些
(具体最差是多少我也没证明白。。)
4.k=0时相当于最短路问题,要特判!
5.dp角标是点作为关键点的编号而不是本身编号(RE预警)
教训
1.审题!!
2.对边界条件的谨慎处理
3.代码能力太差了qwq