classSolution{privatefinalintINF=10000*101+1;publicintfindCheapestPrice(int n,int[][] flights,int src,int dst,int k){int res =INF;// arr[i][j]表示正好经过i个城市到达城市j的最低花费int[][] arr =newint[k +2][n];// 只有arr[0][src]为0,其余为0表示无法到达for(int i =0; i < k +2; i++){Arrays.fill(arr[i],INF);}
arr[0][src]=0;for(int i =1; i < k +2; i++){for(int[] flight : flights){int prev = flight[0];int next = flight[1];int cost = flight[2];
arr[i][next]=Math.min(arr[i][next], arr[i -1][prev]+ cost);}}for(int i =0; i < k +2; i++){
res =Math.min(res, arr[i][dst]);}return res ==INF?-1: res;}}