5가 나와야하지 않을까요
4 6
1 2 3
2 3 3
3 4 1
1 3 5
2 4 5
1 4 4
1 3
1504번 - 특정한 최단 경로
그리구 pq에서 뽑아낸 다음에 cost를 바꾸는건 pq 크기가 더 늘어기 쉬워서 시간이 좀 빡빡하면 시간초과가 날 수 있어요
cost[from][from]=0;
while (!q.empty())
{
pair<int, int> p = q.top(); q.pop();
if (cost[from][p.second] < p.first)
continue;
for (int i = 0; i < vec[p.second].size(); i++)
{
int nDirect = vec[p.second][i].first;
int nDistance = p.first + vec[p.second][i].second;
if (nDistance < cost[from][nDirect]){
q.push(make_pair(nDistance, nDirect));
cost[from][nDirect]=nDistance;
}
}
}
이런식으로 쓰면 더 빨리 돌아갑니다
댓글을 작성하려면 로그인해야 합니다.
rhkd2612 6년 전
long형으로 바꿔도 안되요