celestial   3년 전

이미 지나온 부분은 다시 검사할 필요가 없으니까

int ans = 0;

for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
visited[i][j] = true;
pair,char>start;
start.first.first = i;
start.first.second = j;
start.second = map[i][j];

Q.push(start);
ans+=BFS(start);

}
}

이런 식으로 이중 포문을 처음부터 돌지 않도록 조치해주었는데요,

그럼에도 어느 부분에서 잘못한 것인지 모르겠습니다. 

입출력을 빨리 받는 것도 있다길래 입력해보았더니 그럼에도 여전히 90퍼센트에서 시간 초과가 나고 있군요.

조언을 주시면 정말 감사하겠습니다. 

qnsghd9999   2년 전

코드가 주석도 없어서 읽기가 솔직히 말하자면 좀 그래요 ㅠㅠ 힌트를 조금 드리겠습니다. 

지나는 길이 무한으로 도는 곳이라면  다시 또다시필요 없으니깐 처리하잖아요??

그러면 지나는 길이 빠져나올 수 있는 길이라면 그 길도 다시 갈 필요가 없겠죠? 그 길도 처리를 해주시면 될 것 같아요~


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