알고리즘/SWEA

[파이썬] [SWEA] 4871. [파이썬 S/W 문제해결 기본] 4일차 - 그래프 경로

SBOX Learning by doing 2021. 2. 25. 23:06
반응형

swexpertacademy.com/main/learn/course/subjectList.do?courseId=AVuPDN86AAXw5UW6

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

T = int(input())

def dfs(v): # v: 시작정점
    # visited 체크: 하고픈 일 해라(출력)

    visited[v] = True
    # print(v, end=" ")

    # 시작정점(v)의 인접한 모든 점정 (w) for 돌리기
    for w in range(1, V+1):
        # 인접정점(w)가 방문하지 않았으면
        if adj[v][w] == 1 and visited[w] == False:
            # 다시 dfs(w) 재귀 호출
            dfs(w)

for tc in range(1,T+1):
    V, E = map(int, input().split())  # V: 정점재수, E:간선갯수


    # 0 행렬 그래프 생성: 숫자는 1부터 시작하기 때문에 1개 더 추가
    adj = [[0] * (V+1) for _ in range(V+1)]  # 인접행렬 초기화
    # 지나간 길인지 확인 행렬: 숫자는 1부터 시작하기 때문에 1개 더 추가
    visited = [0] * (V+1)


    # 입력
    for _ in range(E):
        tmp = list(map(int, input().split()))
        s, e = tmp[0], tmp[1]
        adj[s][e] = 1

    # 확인 할 출발 노드 S G
    S, G = map(int, input().split())
    # print(S, G)

    # 행렬 그래프 확인
    # for i in range(V+1):
        # print("#{} {}".format(i, adj[i]))

    # 함수 실행
    dfs(S)

    if visited[G] == 1:
        print("#{} 1".format(tc))
    else:
        print("#{} 0".format(tc))

    # print('--------------')
반응형