단순히 합치는 것이 아니기 때문입니다.
56번 줄의 else는 if(visit[next]==true)에 걸린 것이지, if(pre[cur]!=next)에 걸린 것이 아닙니다.
둘을 합쳐서 if(visit[next]==true && pre[cur]!=next)가 되면 pre[cur]==next이기만 해도 else로 넘어가는 것입니다. 하지만 else로 넘어가는 것은 visit[next]!=true인 경우만이어야 하기 때문에 차이가 생기는 것입니다.
tldnjs0821 1년 전
아래의 코드로 제출해서 맞긴 했습니다.
근데 45번째줄부터 55번째줄까지의 코드를
if(visit[next]==true && next!=pre[cur])
cycle[cur]=true;
find_cycle=true;
while(cur != next){
cycle[pre[cur]]=true;
cur=pre[cur];
}
return;
}
이렇게 바꾸면 메모리 초과라고 나오네요.
그저 if문 두번 통과하는 것을 하나로 합친 것이라 생각했는데
뭔가 다른 점이 있을까요?
알려주시면 감사하겠습니다.