求全源最短路,对于每个城市,求所有到它的距离小于distanceThreshold的城市,所有城市取最小值即可。
1、Floyd
class Solution {
public:
int findTheCity(int n, vector>& edges, int distanceThreshold) {
int g[n][n];
memset(g,0x3f,sizeof g);
for(auto p:edges) g[p[0]][p[1]]=g[p[1]][p[0]]=p[2];
for(int k=0;k
2、Dijkstra
class Solution {
public:
int findTheCity(int n, vector>& edges, int distanceThreshold) {
int g[n][n];
memset(g,-1,sizeof g);
for(auto p:edges) g[p[0]][p[1]]=g[p[1]][p[0]]=p[2];
auto sum=[&](int x){
int vis[n];
int d[n];
memset(vis,0,sizeof vis);
memset(d,0x3f,sizeof d);
priority_queue,vector>,greater>> q;
q.push({0,x});
while(!q.empty()){
auto [dst,y]=q.top();
q.pop();
if(vis[y]) continue;
vis[y]=1;
for(int i=0;i