할 일 순서 정하기 ORDERING 오답이 계속 떠요.. boytoman 안녕하세요 topological sorting(위상정렬) 문제인거는 알겠는데요.. 제 알고리즘이 계속 오답으로 나오네요... 도저히 모르겠습니다. 예제는 다 맞게 나오는데... 무엇이 잘못되었는지 아니면 어려운 예제가 있는지 아시는분 부탁드립니다. #define SIZE 27 #define CONNECTSIZE 101 int TC; int N; int M; char Input[SIZE][2] = { 0, }; int Data[SIZE][CONNECTSIZE] = { 0, }; int DataOut[SIZE] = { 0, }; int DataIn[SIZE] = { 0, }; int Que[SIZE]; int Header = 0, Tail = 0; void PRINT_DATA() { for (int i = 0; i < N; i++) { printf("%3d", DataOut[i]); } printf("\n"); for (int i = 0; i < N; i++) { printf("%3d", DataIn[i]); } printf("\n"); } void PRINT_QUE() { //printf("[QUE] "); for (int i = 0; i < Tail; i++) { printf("%c", Que[i]+65); } printf("\n"); } void Clean() { Header = 0; Tail = 0; for (int i = 0; i < N; i++) { DataOut[i] = 0; DataIn[i] = 0; Que[i] = 0; } } void AddQue(int Value) { int Temp; Que[Tail++] = Value; //PRINT_QUE(); for (int i = Header + 1; i < Tail; i++) { int j = i; while (j>Header + 1 && Que[j - 1] > Que[j]) { Temp = Que[j-1]; Que[j - 1] = Que[j]; Que[j] = Temp; j--; } } //PRINT_QUE(); } void Solved() { for (int i = 0; i < N; i++) { if (DataIn[i] == 0) { Que[Tail++] = i; } } //PRINT_QUE(); while (Header != Tail) { for (int i = 0; i < DataOut[Que[Header]]; i++) { DataIn[Data[Que[Header]][i]]--; if (DataIn[Data[Que[Header]][i]] == 0) { AddQue(Data[Que[Header]][i]); //printf("Add Que\n"); //PRINT_QUE(); } } Header++; //printf("Header:%d,Tail:%d\n", Header, Tail); //PRINT_QUE(); } } int main(void) { scanf("%d", &TC); for (int i = 0; i < TC; i++) { scanf("%d %d", &N, &M); Clean(); for (int j = 0; j < M; j++) { scanf("%s", &Input[j]); Data[Input[j][0] - 'A'][DataOut[Input[j][0] - 'A']++] = Input[j][1] - 'A'; DataIn[Input[j][1] - 'A']++; } if (M == 0) { for (int k = 65; k < 65 + N; k++) { printf("%c", k); } printf("\n"); } else if (N == 1) { printf("A\n"); } else { Solved(); PRINT_QUE(); } } // PRINT_DATA(); //printf("%d,%d\n", Data[0][0], Input[0][1]); return 0; } 9년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
boytoman
안녕하세요
topological sorting(위상정렬)
문제인거는 알겠는데요..
제 알고리즘이 계속 오답으로 나오네요... 도저히 모르겠습니다.
예제는 다 맞게 나오는데...
무엇이 잘못되었는지 아니면 어려운 예제가 있는지 아시는분 부탁드립니다.
9년 전