반응형

문제 설명이 좀 어렵게 되있는데 

dfs로 정점의 마지막까지 탐색한 뒤 길이 존재하면 1, 존재하지 않으면 0을 출력해주면 된다.



소스코드

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
#include <cstdio>
#include <cstring>
#define MAX 100
using namespace std;
int n, m;
bool isExisitRoad;
bool visit[MAX];
bool map[MAX][MAX];
void dfs(int s) {
    visit[s]=1;
    if(s==99) {
        isExisitRoad=1;
        return;
    }
    for (int x=0; x<MAX; x++) {
        if (map[s][x] && !visit[x])
            dfs(x);
    }
}
void solve() {
    for (int t=0; t<10; t++) {
        memset(map, 0sizeof(map));
        memset(visit, 0sizeof(visit));
        isExisitRoad=0;
        scanf("%d %d"&n, &m);
        int y, x;
        for (int i=0; i<m; i++) {
            scanf("%d %d"&y, &x);
            map[y][x]=1;
        }
        
        dfs(0);
        if (isExisitRoad) printf("#%d\n", n);
        else printf("#%d\n", n);
    }
}
int main() {
    solve();
    return 0;
}
cs


반응형

'Algorithm' 카테고리의 다른 글

[SWEA 1949] 등산로 조성  (0) 2019.08.19
[SWEA 1208] Flatten  (0) 2019.07.29
[SWEA 2805] 농작물 수확하기  (0) 2019.07.23
[SWEA 5162] 두가지 빵의 딜레마  (0) 2019.07.23
[BOJ 7576] 토마토  (0) 2019.07.05

+ Recent posts