题目:
1334. 阈值距离内邻居最少的城市
有 n
个城市,按从 0
到 n-1
编号。给你一个边数组 edges
,其中 edges[i] = [fromi, toi, weighti]
代表 fromi
和 toi
两个城市之间的双向加权边,距离阈值是一个整数 distanceThreshold
。
返回能通过某些路径到达其他城市数目最少、且路径距离 最大 为 distanceThreshold
的城市。如果有多个这样的城市,则返回编号最大的城市。
注意,连接城市 i 和 j 的路径的距离等于沿该路径的所有边的权重之和。
解答:
代码:
class Solution {public int findTheCity(int n, int[][] edges, int distanceThreshold) {int[] ans={Integer.MAX_VALUE/2,-1};int[][] mp=new int[n][n];for(int i=0;i<n;i++){Arrays.fill(mp[i],Integer.MAX_VALUE/2);}for(int[] eg:edges){int from=eg[0],to=eg[1],weight=eg[2];mp[from][to]=mp[to][from]=weight;}for(int k=0;k<n;k++){mp[k][k]=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){mp[i][j]=Math.min(mp[i][j],mp[i][k]+mp[k][j]);}}}for(int i=0;i<n;i++){int cnt=0;for(int j=0;j<n;j++){if(mp[i][j]<=distanceThreshold){cnt++;}}if(cnt<=ans[0]){ans[0]=cnt;ans[1]=i;}}return ans[1];}
}