intnetworkDelayTime(vector<vector<int>>& times, int n, int k){ mp.resize(n + 1); for (auto& edge : times) { mp[edge[0]][edge[1]] = edge[2]; }
vector<int> r(n + 1, INT_MAX); r[k] = 0;
unordered_set<int> s; while (true) { int cur = -1, tim = INT_MAX; for (int i = 1; i <= n; i ++) { if (r[i] < tim && s.find(i) == s.end()) { cur = i; tim = r[i]; } }
#define MAXVALUE 0x3f3f3f3f classSolution { public: intnetworkDelayTime(vector<vector<int>>& times, int n, int k){ vector<vector<int>> mp(n + 1, vector<int>(n + 1, MAXVALUE));
for (int i = 1; i <= n; i ++) { mp[i][i] = 0; } for (auto& edge : times) { mp[edge[0]][edge[1]] = edge[2]; }
for (int k = 1; k <= n; k ++) { for (int i = 1; i <= n; i ++) { for (int j = 1; j <= n; j ++) { mp[i][j] = min(mp[i][j], mp[i][k] + mp[k][j]); } } } int ans = 0; for (int i = 1; i <= n; i ++) { ans = max(ans, mp[k][i]); } if (ans == MAXVALUE) return-1; elsereturn ans; } };