segment tree의 index는 b까지의 거리를, 원소는 c까지의 거리의 최소 값을 저장. 즉, 각 정점을 돌 때마다 tree[b까지의 거리]에 (c까지의 거리)를 갱신 해주고, tree[0, b까지의 거리 - 1]의 최소값과 (c까지의 거리)를 비교하여 최솟값이 더 작으면 false로, 아니면 true로 하여 저장 -> 출력
런타임에러가 뜨는것으로 보아 (b까지의 거리)의 최대값을 n으로 넘겨 tree의 크기를 사이징해주다보니 INT_MAX만큼 사이징되면 약 2기가바이트... 먹더라구요. 그래서 여러가지 테스트 많이 해봤는데
1. INT_MAX만큼 사이징하면 런타임에러가 아니라 메모리초과로 뜨는데 그럼...
2. 정올에 넣으니 런타임에러뜰 뿐만 아니라 틀린 TC도 여러개 보입니다. 대충 보니 YES로 나와야할 값들은 YES로 잘 나오는데 NO로 나와야하는 값들은 몇몇개가 YES로 나옵니다. 즉, true로 체크됩니다.
whquddn55 6년 전
2. a에서의 최소거리를 기준으로 정렬
3. 정렬된 정점을 순서대로 돌며 segment tree에 갱신하는 작업을 수행
segment tree의 index는 b까지의 거리를, 원소는 c까지의 거리의 최소 값을 저장. 즉, 각 정점을 돌 때마다 tree[b까지의 거리]에 (c까지의 거리)를 갱신 해주고, tree[0, b까지의 거리 - 1]의 최소값과 (c까지의 거리)를 비교하여 최솟값이 더 작으면 false로, 아니면 true로 하여 저장 -> 출력