오일러 회로

시간 제한3초메모리 제한512 MB

요약
다중 간선이 있을 수 있는 인접 행렬이 주어질 때 오일러 회로를 출력하거나 존재하지 않으면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
그래프, DFS, 구현
정답자
아직 제출이 없습니다

문제

양방향 그래프가 주어진다. 어떤 정점에서 출발해 그래프의 모든 간선을 정확히 한 번씩 지나고 다시 출발 정점으로 돌아오는 경로를 오일러 회로라고 한다.

주어진 그래프에서 오일러 회로를 하나 찾아 방문한 정점의 순서대로 출력하라.

입력

첫째 줄에 정점의 수 NN이 주어진다. (1≤N≤1,0001 \le N \le 1{,}000)

다음 NN개의 줄에는 인접 행렬이 주어진다. 그중 ii번째 줄은 정점 ii와 다른 정점 사이의 간선 개수를 나타낸다. 행렬의 각 값은 00 이상 1010 이하의 정수이며, 두 정점 사이에 간선이 여러 개 있을 수 있다.

입력 그래프에는 양 끝점이 같은 간선은 없으며, 그래프는 연결되어 있다.

출력

오일러 회로가 존재하면, 방문하는 정점 번호를 공백으로 구분해 한 줄에 출력한다. 시작 정점은 어느 정점이어도 되며, 가능한 회로 중 아무거나 출력해도 된다.

오일러 회로가 존재하지 않으면 -1을 출력한다.

예제1

  1. 예제 1

    입력
    6
    0 1 0 1 1 1
    1 0 1 1 1 0
    0 1 0 1 0 0
    1 1 1 0 1 0
    1 1 0 1 0 1
    1 0 0 0 1 0
    
    예상 출력
    1 2 3 4 1 5 2 4 5 6 1