surung9898   3년 전

그러기 위해서는 선생님들의 도움이 절실합니다....

논리는 다음과 같습니다. n개의 정점에 n개의 간선을 가지므로 반드시 1개의 사이클이 형성될 것이라고 생각했습니다.

따라서 사이클을 먼저 찾은 뒤, 이 사이클 각각에 번호를 붙입니다.

이 때 사이클에 번호를 붙이는 순서는 시계 방향 또는 시계 반대방향입니다. 따라서, 만약 정점 갯수가 2n개인 사이클에서 a + n = b일때 a와 b는 정반대에 있고, 이 a와 b 사이의 simple path는 2개라고 생각했습니다.

이 후 사이클의 각 정점 i와 연결된 subtree의 모든 정점에 대해 번호 i를 할당한 후, 각각의 쿼리에 대하여

1. 사이클의 정점 갯수가 홀수라면 반드시 1을 출력

2. 사이클의 정점 갯수가 짝수라면, 이 정점에 할당된 값 x와 y가 x + n = y 관계를 가진다면 2, 아니면 1을 출력하도록 하였습니다.


그러나 어림도 없지 틀렸습니다... 반례나, 틀린 점 지적해주시면 감사하겠습니다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

Green55   3년 전

사이클의 정점 개수는 상관이 없습니다. 예제를 직접 손으로 그려보시는걸 추천드립니다. 1 과 3 사이의 경로는 1-2-3과 1-3 총 두 개입니다. 

path가 2개 존재하기 위해서는 사이클을 시계방향으로 도는 것과 반시계방향으로 도는 것 둘 다 가능해야하고, 여기서 사이클의 크기가 짝수인지 홀수인지는 무관계합니다.

surung9898   3년 전

헉... 문제를 뭔가 착각하고 있었군요... shortest path가 몇 개인지를 세고 있었나봅니다... 감사합니다!!!!!!!

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