网络延迟时间
class Solution {
public:
int networkDelayTime(vector<vector<int>>& times, int n, int k) {
vector<vector<long long>> graph(n+1,vector<long long>(n+1,INT_MAX));
vector<bool> visited(n+1,false);
for(int i=1;i<=n;i++)
graph[i][i]=0;
for(auto time:times)
graph[time[0]][time[1]]=time[2];
visited[k]=true;
for(int i=1;i<n;i++){
int id=0;
int dis=INT_MAX;
for(int j=1;j<=n;j++){
if(visited[j]==false&&graph[k][j]<dis){
dis=graph[k][j];
id=j;
}
}
visited[id]=true;
for(int i=1;i<=n;i++){
if(graph[k][id]+graph[id][i]<graph[k][i]){
graph[k][i]=graph[k][id]+graph[id][i];
}
}
}
int ans=0;
for(int i=1;i<=n;i++){
if(graph[k][i]==INT_MAX)
return -1;
ans=max(ans,(int)graph[k][i]);
}
return ans;
}
};