• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

23.05.30 02:01 작성 조회수 195

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]으로 접근을 할 수 없습니다.

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