세 트리

시간 제한0.5초메모리 제한1024 MB

요약
중복 간선과 루프가 있는 그래프에서 각 간선에 0, 1, 2, 3을 붙여 1, 2, 3번 간선이 각각 스패닝 트리를 이루도록 하거나 불가능함을 판정한다.
난이도

어려움10점 중 8점

유형
유니온 파인드, 그래프, 그리디, 행렬
정답자
아직 제출이 없습니다

문제

NN 개의 정점과 MM 개의 양방향 간선을 가진 그래프가 주어진다. 그래프의 정점은 1,2,…,N1, 2, \ldots, N 의 번호가 붙어 있다. 그래프에는 중복 간선과 루프가 존재할 수 있다.

주어진 그래프에서 33 개의 스패닝 트리를 찾아라. 이 때, 모든 간선은 최대 한 개의 스패닝 트리에 속해야 한다.

입력

첫 번째 줄에 두 정수 N,MN, M 이 주어진다. (2≤N≤500,1≤M≤1,5002 \le N \le 500, 1 \le M \le 1\\,500)

이후 MM 개의 줄에 각 간선이 잇는 두 정점의 번호 x,yx, y 가 주어진다. (1≤x,y≤N1 \le x, y \le N)

출력

조건을 만족하는 33 개의 스패닝 트리를 찾을 수 있다면, 길이 MM 의 문자열을 출력하라. 문자열의 각 문자는 0, 1, 2, 3으로 이루어져 있어야 한다. ii 번 문자가 0이면, 입력에서 ii 번째로 주어진 간선은 어떠한 스패닝 트리에도 속하지 않음을 의미한다. ii 번 문자가 1, 2, 3이면, 입력에서 ii 번재로 주어진 간선은 해당 번호의 스패닝 트리에 속함을 의미한다.

만약에 조건을 만족하는 33 개의 스패닝 트리를 찾을 수 없다면 -1을 출력하라.

예제2

  1. 예제 1

    입력
    4 10
    1 2
    1 3
    2 4
    3 4
    4 1
    3 2
    4 2
    1 4
    2 3
    3 1
    
    예상 출력
    1112223033
    
  2. 예제 2

    입력
    5 5
    1 2
    2 3
    1 3
    3 1
    1 1
    
    예상 출력
    -1