1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #include <stdio.h> #define MAX 101 int TCNum; int posNum; int arr[MAX][MAX]; int Visited[MAX][MAX]; int flag = 0; void input() { int i, j; int src; int dst; flag = 0; //Testcase 번호 및 순서쌍 scanf("%d %d", &TCNum, &posNum); for (i = 0; i < MAX; i++) { for (j = 0; j < MAX; j++) { arr[i][j] = 0; Visited[i][j] = 0; } } //src, dst 입력 받기 for (i = 0; i < posNum; i++) { scanf("%d %d", &src, &dst); arr[src][dst] = 1; arr[dst][src] = 0; } } void output() { if (flag == 1) { printf("#%d %d\n", TCNum, flag); } else printf("#%d %d\n", TCNum, flag); } void process(int go) { int i; //목적지인 99에 도착하는지 확인 if (go == 99) { flag = 1; } for (i = 0; i < MAX; i++) { if (arr[go][i] == 1 && Visited[go][i] == 0) { Visited[go][i] = 1; process(i); Visited[go][i] = 0; } } } int main(void) { int TC; TC = 10; //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); while (TC--) { input(); process(0); output(); } return 0; } | cs |
'Programming > Algorithm' 카테고리의 다른 글
긴 자리 덧셈 뺄셈 계산하는 코드 (0) | 2016.03.24 |
---|---|
알고리즘 학습 사이트 (0) | 2016.03.24 |
멱집합(부분집합) 응용, 조건에 따라 불필요한 부분집합 제거 (0) | 2016.03.10 |
순열 구하기 (예제) (0) | 2016.03.10 |
멱집합 (백트래킹 예제) (0) | 2016.03.10 |