arrrrrrrrr   4년 전

2-sat 문제 scc로 풀기위해 tarjan알고리즘을 사용했씁니다.

pos와 neg를 구별하기 위해 neg는 정점 번호 순서대로 0, 1, 2, ...., N-1 인덱스를 pos는 정점 번호 순서대로 N, N+1, N+2, ... 2N-1의 인덱스를 가지게 했습니다! (즉 (0, N), (1, N+1) .... (N-1, 2N-1) 이렇게가 짝입니다!)

이때 pos와 neg의 sccId를 비교하는 과정을 코드 32-48 줄처럼 구현을 했을때 틀렸습니다 가 나옵니다..(이 방법을 할떈 sccId 배열의 크기는 N으로 할당하고 -1로 초기화 했습니다.)

위의 방법이 아닌 sccId 배열을 2N크기만큼 할당하고 tarjanScc()함수 종료후 서로 비교해 pos/neg에서 같은 sccId를 가지는게 있는지 확인하는 방법을 사용하면 맞앗습니다 가 나옵니다.. 

위 두방법의 차이가 무엇인지 잘모르겠습니다.. 왜 밑의 코드와 같은 방법을 이용하면 틀리는지 이해가되지 않습니다.. 고수님들의 도움 부탁드립니다!

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