작성
·
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]으로 접근을 할 수 없습니다.
질문을 보니 잘 이해하고 있는 것 같은데요.