日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1334. 阈值距离内邻居最少的城市(最短路径Dijkstra)

發(fā)布時間:2024/7/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1334. 阈值距离内邻居最少的城市(最短路径Dijkstra) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 題目

有 n 個城市,按從 0 到 n-1 編號。給你一個邊數(shù)組 edges,其中 edges[i] = [fromi, toi, weighti] 代表 fromi 和 toi 兩個城市之間的雙向加權(quán)邊,距離閾值是一個整數(shù) distanceThreshold。

返回能通過某些路徑到達其他城市數(shù)目最少、且路徑距離 最大 為 distanceThreshold 的城市。如果有多個這樣的城市,則返回編號最大的城市。

注意,連接城市 i 和 j 的路徑的距離等于沿該路徑的所有邊的權(quán)重之和。

示例 1: 輸入:n = 4, edges = [[0,1,3],[1,2,1],[1,3,4],[2,3,1]], distanceThreshold = 4 輸出:3 解釋:城市分布圖如上。 每個城市閾值距離 distanceThreshold = 4 內(nèi)的鄰居城市分別是: 城市 0 -> [城市 1, 城市 2] 城市 1 -> [城市 0, 城市 2, 城市 3] 城市 2 -> [城市 0, 城市 1, 城市 3] 城市 3 -> [城市 1, 城市 2] 城市 03 在閾值距離 4 以內(nèi)都有 2 個鄰居城市,但是我們必須返回城市 3,因為它的編號最大。

示例 2: 輸入:n = 5, edges = [[0,1,2],[0,4,8],[1,2,3],[1,4,2],[2,3,1],[3,4,1]], distanceThreshold = 2 輸出:0 解釋:城市分布圖如上。 每個城市閾值距離 distanceThreshold = 2 內(nèi)的鄰居城市分別是: 城市 0 -> [城市 1] 城市 1 -> [城市 0, 城市 4] 城市 2 -> [城市 3, 城市 4] 城市 3 -> [城市 2, 城市 4] 城市 4 -> [城市 1, 城市 2, 城市 3] 城市 0 在閾值距離 4 以內(nèi)只有 1 個鄰居城市。提示: 2 <= n <= 100 1 <= edges.length <= n * (n - 1) / 2 edges[i].length == 3 0 <= fromi < toi < n 1 <= weighti, distanceThreshold <= 10^4 所有 (fromi, toi) 都是不同的。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

2. 解題

參考他人解題

class Solution { public:int findTheCity(int n, vector<vector<int>>& edges, int distanceThreshold) {vector<vector<int>> dis(n,vector<int>(n,INT_MAX));//最短路徑矩陣for(int i = 0; i < n; ++i)dis[i][i] = 0;//自己到自己為0for(int i = 0; i < n; ++i){//優(yōu)先隊列,按照pair的第一個排序,相同的話,則按第二個排序出隊priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> q;q.push({0,i});//第一個是距離,第二個是點的序號int from, to, distance;while(!q.empty()){from = q.top().second;q.pop();for(const auto& e : edges){if(from == e[0]){to = e[1];distance = e[2];if(dis[i][from]+distance < dis[i][to]){ //有更小的路徑可以到達 i--> todis[i][to] = dis[i][from]+distance;q.push({dis[i][to], to});}}else if(from == e[1]){to = e[0];distance = e[2];if(dis[i][from]+distance < dis[i][to]){dis[i][to] = dis[i][from]+distance;q.push({dis[i][to], to});}}}}}int count[n]={0};for(int i = 0; i < n; ++i)for(auto& d : dis[i])if(d <= distanceThreshold)//統(tǒng)計閾值內(nèi)的城市個數(shù)count[i]++;int minVal = INT_MAX, idx;for(int i = 0; i < n; ++i){if(count[i] <= minVal){minVal = count[i];idx = i;//找距離內(nèi),鄰近城市最少的城市}}return idx;} };

總結(jié)

以上是生活随笔為你收集整理的LeetCode 1334. 阈值距离内邻居最少的城市(最短路径Dijkstra)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。