๋ฌธ์
์ฝ๋
class Solution {
public:
vector<pair<int,int>>graph[101];
int d[101];
void dijkstra(int start){
priority_queue<pair<int,int>>pq;
pq.push({0,start});
d[start]=0;
while(!pq.empty()){
int dist = -pq.top().first;
int now = pq.top().second;
pq.pop();
if(d[now]<dist) continue;
for(int i=0; i<graph[now].size(); i++){
int cost = dist + graph[now][i].second;
int neighbor = graph[now][i].first;
if(cost<d[neighbor]){
d[neighbor] = cost;
pq.push({-cost,neighbor});
}
}
}
}
int networkDelayTime(vector<vector<int>>& times, int n, int k) {
for(int i=0; i<times.size(); i++){
graph[times[i][0]].push_back({times[i][1],times[i][2]});
}
fill(d,d+101,1e9);
dijkstra(k);
int ans=0;
for(int i=1; i<=n; i++){
if(d[i]==1e9) return -1;
else ans=max(ans,d[i]);
}
return ans;
}
};
ํ์ด
dijkstra๋ก ๊ตฌํํ์ต๋๋ค.
์ ๊ทธ๋ํ์ ์ ์ถ๋ ฅ์ด ์๋์ ๊ฐ์ ๋ ์ถ๋ ฅํด์ผ ํ๋ ๋ฌธ์ ๋ ์คํํธ ์ง์ (k=2)์์ ๋ชจ๋ ๋ ธ๋(n=4)๊น์ง ๊ฐ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ถ๋ ฅํ๋ ๊ฒ์ ๋๋ค.
Input: times = [[2,1,1],[2,3,1],[3,4,1]], n = 4, k = 2
Output: 2
2์์ 1๋ฒ๊ณผ 3๋ฒ๊น์ง๋ ๋์์ ๊ฐ์ ์์ผ๋ ๋์ผํ๊ฒ 1์ด๊ฐ ๊ฑธ๋ฆฐ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
for(int i=1; i<=n; i++){
if(d[i]==1e9) return -1;
else ans=max(ans,d[i]);
}
์ฝ๋ ๋ง์ง๋ง์ ์ ๋ถ๋ถ์ ํตํด์ ํด๋น ๋ ธ๋๋ก ๊ฐ ์ ์์ ๋๋ ๋ฐ๋ก -1์ return ํ์๊ณ , ๊ฐ ์ ์๋ ๊ฒฝ์ฐ์๋ max(ans,d[i])๋ฅผ ํตํด ํด๋น ๋ ธ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์ต๊ณ ์๊ฐ์ ์ ๋ต์ผ๋ก ๊ฐฑ์ ํด์ฃผ์์ต๋๋ค.(dijkstra๋ฅผ ์คํํ๋ฉด์ ์ถ๋ฐ ๋ ธ๋์์ ํด๋น ๋ ธ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๊ฐฑ์ ํด์คฌ์ผ๋)
๋ค๋ง ์ฑ์ ์๊ฐ์ด ๊ฝค ์ค๋ ๊ฑธ๋ ค์ ๋ก์ง ๋ฌธ์ ์ธ ์ค ์์๋๋ฐ ์ ์ถํ ๋๋ง๋ค ์๊ฐ์ด ์ฐจ์ด๊ฐ ๋์ ๊ทธ๋ฅ ์ฑ์ ์๋ฒ ๋ฌธ์ ์ธ ๊ฑธ๋ก...
'Algorithm ๐ง๐ปโ๐ป > Leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Leetcode,c++] Add Digits (0) | 2022.03.02 |
---|---|
[Leetcode,c++] Happy Number (0) | 2022.03.02 |
[Leetcode,c++] Majority Element (0) | 2021.11.28 |
[Leetcode,c++] Valid Anagram (0) | 2021.11.20 |
[Leetcode,c++] Single Number (0) | 2021.11.19 |
[Leetcode,c++] Combination Sum II (0) | 2021.11.16 |
๋๊ธ