//시간초과가 뜨는 코드 :
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
for (int k = j+1; k <= N; k++) {
road[j][k] = min(road[j][k], road[j][i] + road[i][k]);
road[k][j] = road[j][k];
}
}
}
road[k][j] = road[j][k] = min(road[j][k], road[j][i] + road[i][k]); //이것도 시간초과..
//안뜨는 코드 :
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
for (int k = 1; k <= N; k++) {
if (j == k) continue;
road[j][k] = min(road[j][k], road[j][i] + road[i][k]);
}
}
}
이차원 배열 접근에서 상수시간 차이 때문인가 싶어 int t에 min 값을 복사하고, 이걸 대각선 대칭으로 각각 넣어줘보기도 했는데, 똑같다. 시간초과난다.
대체 왜,,? 밑에꺼는 초과 안나는데 위에께 나는거야?? 왜??
'Languages > C & C++' 카테고리의 다른 글
C++ : STL Priority Queue (0) | 2023.01.05 |
---|---|
C++ : STL map, set, multiset (0) | 2023.01.05 |
C++ : STL map, set 처럼 인덱스 엑세스가 불가능한 컨테이너 접근하기 (0) | 2023.01.05 |
C++ : lower_bound 의 활용 (0) | 2023.01.05 |
C : while(feof(fp)) - 왜 내가 원할 때 안끝날까? (0) | 2023.01.05 |