for (cosnt auto &e : endge) {
if (dist[e.from] == INF) continue;
if (dist[e.to] > dist[e.from] + e.w) {
dist[e.to] = dist[e.from] + e.w;
update = true;
}
}
...
Bellman-Ford 알고리즘 실제 적용 문제를 해결하기 위해 참조 코드들을 공부하던 중,
&가 붙어있는 걸 뒤늦게 알아봤다. 굳이 이게 없어도 문제는 해결되긴 하는데 어떤 역할일까 궁금해서 찾아봤다.
&가 없으면 매 반복문마다 새로운 객체를 생성한다. 이 문제 상황에서는
e가 읽는 용도로만 쓰이므로, &를 통해 edges[i]를 직접 가리키게 하면 기존의 복사 비용을 절감할 수 있다고 한다.
int round(double number);
// int round(double); 이렇게만 작성해도 가능.
int main() ...
int round(double number)
{
return static_case<int> (floor(number + 0.5));
}