HDU 6714 最短路2(Dijkstra)
题面
题意:
对于$floyed$算法,$D_{i,j}$表示最外层循环最小的能够求出来$dis_{i,j}$的循环次数,计算$\sum_{i=1}^{n}{\sum_{j=1}^{n}{D_{i,j}}}$
思路
其实$D_{i,j}$即为$i$到$j$的最短路路径上最小的不包含$i,j$的最大下标。我们跑$n$次$Dijkstra$,每次更新路径上的最小的最大下标即可。复杂度$O(n^2log(n))$。
代码
1 |
|
对于$floyed$算法,$D_{i,j}$表示最外层循环最小的能够求出来$dis_{i,j}$的循环次数,计算$\sum_{i=1}^{n}{\sum_{j=1}^{n}{D_{i,j}}}$
其实$D_{i,j}$即为$i$到$j$的最短路路径上最小的不包含$i,j$的最大下标。我们跑$n$次$Dijkstra$,每次更新路径上的最小的最大下标即可。复杂度$O(n^2log(n))$。
1 | #include<bits/stdc++.h> |