humor999   3년 전

BFS로 접근했습니다.

1. 입력받을 시 시작점(0)의 호선을 기억하기위해 row에 저장합니다.

     앞으로 row는 현재 탐색중인 호선을 저장합니다..

2. row호선을 역을 순회하면서 각 역마다 환승가능한 호선이 있는지 chk()함수를 통해 확인합니다.

2.5 row호선을 순회하다가 M을 찾으면 cnt(환승횟수)를 저장하고 반환합니다.

3. chk()함수는 같은 호선이나 방문한 호선은 무시하고 같은 역이 있는 호선을 set에 담습니다.

4. set에 있는 호선을 꺼내 queue에 넣고 방문한 것으로 처리합니다.(bool v[])

위 방법대로 했습니다..

순환선 문제일것 같아서 몇 가지 반례를 만들어서 해봤는데도 뭐가 문젠지 잘 모르겠서요.

살려주새오..

반례

5
7 12 1 2 3 1 12 8
2 12 13
7 13 0 9 4 99 99 13
6 13 8 10 7 99 13
2 13 22
22

ans=1

sait2000   3년 전

서울역이 환승역이면 어떡해요?

humor999   3년 전

@sait2000 답변 감사합니다.

그렇다면 몇호선에 있는 서울역을 이용했느냐에 따라 답이 달라지지 않나요??

예를들어 다음과 같은 입력에서

3
1 0
2 0 3
2 3 8
8

1호선의 서울역을 처음 탔으면 답은 2이지만 2호선에서 서울역을 타면 1이 나옵니다.

문제에서는 몇호선에있는 서울역을 처음 이용한다고 제시되어있지 않아보이고..

위의 문제때문에 서울역을 유일하다는 게 암묵적인 정보인거 같기도 합니다.

humor999   3년 전

해결했습니다.

윗 분 말대로 서울역이 환승역일 때 최소값을 내놓으면 되네요.

다음 반례 참고하시면 됩니다.

3
2 0 9
2 0 3
2 3 8
9

ans:0

3
1 0
2 0 3
2 3 8
8

ans:1

댓글을 작성하려면 로그인해야 합니다.