celestial   2년 전

일단 제 코드 방식은 다음과 같습니다. 예제를 예로 들자면

5 4

3 1

3 2

4 3

5 3 

이면 1에서 3으로 향하도록 vector[1]에 3을 넣습니다. 

vector[3] : 4 5 이렇게 들어가겠죠?


처음에는 DFS로 풀었는데 시간초과가 나서 설계를 다시 BFS로 하고, 시간을 줄일 수 있는 개선을 하였습니다.

그 예는 1->3->5 or 1->3->5를 가서 1번 컴퓨터일 때 탐색을 두 번하게 되고

2->3->5 or 2->3->4 이렇게 같은 경로를 반복하게 되는 경우가 발생하니까

hist배열을 만들어서 만일 hist배열에 0 이상의 숫자가 써져 있다면 탐색을 중단하고 루프를 빠져나오도록 만들었습니다. 

약간 메모이제이션틱한 컨셉을 최대한 살려보았습니다ㅜ 

이렇게 되면 굳이 분기가 쓸데없이 내려가는 현상을 막을 수 있을 거라 생각했는데 이게 오히려 틀렸다고 나오네요.

제 코드에 전반적으로 어떤 문제가 있는지 지적해주셔도 되고, 개선 가르침을 주셔도 환영입니다.


감사합니다!

dk10211   2년 전

7 5

7 1

6 7

3 2

4 3

5 3

여기서 1번으로 시도하면 (1,6,7) 총 3개가 감염되고 2번으로 시도하면 (2,3,4,5)  총 4개가 감염되는데 1,2라고 출력하네요  그리고 방문배열 초기화도 안하고 계시고 bfs로 구하면 3번컴퓨터로 인해 감염되는 수가 1로 저장되네요

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