본문 바로가기
Problem Solving/Euler Circuit (한붓그리기)

[오일러 경로] 백준 16168번: 퍼레이드 / 골드 4

by ggyongi 2021. 8. 22.
반응형

https://www.acmicpc.net/problem/16168

 

16168번: 퍼레이드

첫 번째 줄에 지점의 개수 V, 연결 구간의 개수 E가 주어진다. (1 ≤ V ≤ E ≤ 3000) 이후 E개의 줄에 걸쳐 각 연결 구간이 연결하는 두 지점의 번호 Va, Vb가 공백을 사이에 두고 주어진다. (1 ≤ Va,

www.acmicpc.net

import collections
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**5)

v, e = map(int, input().split())
adj = [0 for i in range(v)]
visited = [False for i in range(v)]
graph = collections.defaultdict(list)

for i in range(e):
    a, b = map(int, input().split())
    adj[a-1] += 1
    adj[b-1] += 1
    graph[a].append(b)
    graph[b].append(a)

def dfs(node):
    for next in graph[node]:
        if not visited[next-1]:
            visited[next-1] = True
            dfs(next)

odd = 0
for i in range(v):
    if adj[i] % 2 == 1:
        odd += 1

if odd == 1 or odd > 2:
    print('NO')

else:
    visited[0] = True
    dfs(1)
    for elem in visited:
        if not elem:
            print('NO')
            quit()
    print('YES')

오일러 경로를 직접 만드는 것보다는 오일러 경로가 가능한 조건이 무엇인지 묻는 문제다.

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글