分层迪杰斯特拉,主要解决的是权重变动的最短路径。
只需要在迪杰斯特拉的代码上做轻微的改动就可以。
1.建立多层连接路径
2.求最短结果的时候,取到每一层的最短结果的最小值
本来是用来处理 P4568 [JLOI2011]飞行路线,但是实际有两个用例没法AC,先把4822AC了
package info.frady.luogu;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class P4822 {
public static Node4822[] nodes;
public static void main(String[] args) throws Exception{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(reader.readLine());
int N=Integer.parseInt(st.nextToken());//城市数量
int M=Integer.parseInt(st.nextToken());//航线数量
int K=Integer.parseInt(st.nextToken());//免费乘坐次数
/*st=new StringTokenizer(reader.readLine());
int s=In