[CF1209F]Koala and Notebook_堆优化dij
Koala and Notebook
题目链接:https://codeforces.com/contest/1209/problem/F
数据范围:略。
题解:
开始的时候看错题了....莫名其妙多了一道好题嘻嘻嘻
这个题非常诡异,就是把所有的边连在一起写下来。
所以我们把边权按照每一位建一个点然后拆开,保证每条边都是有向边而且边权是个位数。
然后我们按照图的样子,边权都设为$1$跑一遍堆优化$dij$,因为数的大小比较不是字符串,长串绝对比短串大。
然后我们取出所有的有向边,满足$dis_u = dis_v - 1$,因为只有这样的有向边才有用。
紧接着我们枚举每一个$dis$,并对上一层的节点排个序,即上一层的节点$i$的排名是$rk_i$。
然后每个节点再维护一个$fr_i$表示这个点的最短路(答案)上一个点是啥,也就是上一层的哪个节点编号。
先通过枚举上一个节点的$rk$,求出当前所有点的$fr$,最后转移一下即可。
代码:(我代码是抄的....略
| 欢迎来原网站坐坐! >原文链接<