인프런 커뮤니티 질문&답변

sang ji Choi님의 프로필 이미지
sang ji Choi

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

70. 그래프 최단거리 (BFS : Breadth First Search )

70번 이해가 안돼는게 있습니다.

작성

·

233

0

안녕하세요 선생님 혼자서 해 볼려고 해도 구현이 하기가 어려워 선생님의 코드를 보면서 원리를 이해하고 있는 학생입니다.

선생님이 만드신 코드중에

 for (i = 0;i < map[x].size(); i++) {
                if (ch[map[x][i]] == 0) {
                ch[map[x][i]] = 1;
                Q.push(map[x][i]);
                dis[map[x][i]] = dis[x] + 1;
            }

i = 0;i < map[x].size(); i++이 부분 부터 이해가 잘 되질 않습니다.
x가 1이면 map[1]의 개수는 2가 되고 map[1][0], map[1][1]로
돼야 할 텐데 어떻게 ch[map[1][3]=3] = 1으로 가는지 모르겠습니다.

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

만약 x가 1이면 map[1].size()는 2가 되고 map[1][0]은 3번 정점, map[1][1]은 4번 정점이 값으로 존재합니다. map[1].size()가 2 이므로 for문의 i가 0, 1까지만 반복합니다. 그래서 ch[map[1][i]]에서 map[1][3]으로 접근을 할 수 없습니다.

질문을 보니 잘 이해하고 있는 것 같은데요.

sang ji Choi님의 프로필 이미지
sang ji Choi

작성한 질문수

질문하기