아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

아름다운 오토마타

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

요약
주어진 방향 비순환 그래프가 어떤 문자열의 접미사 오토마타와 일치하는 가장 사전순으로 작은 문자열을 구하거나, 없으면 -1을 출력합니다.
난이도

어려움10점 중 10점

유형
그래프, 위상 정렬, 문자열, 그리디
정답자
아직 제출이 없습니다

문제

Oleksandr은 문자열을 좋아한다. 그가 가장 좋아하는 자료구조는 접미사 오토마타(suffix automaton)이다.

소문자 영어 알파벳으로 이루어진 문자열 ss를 생각하자. ss의 접미사 오토마타는 각 간선 ee에 문자 l(e)l(e)가 적혀 있고 시작 정점 v0v_0가 고정된 방향 비순환 그래프 GG 중에서 정점 수가 가장 적은 그래프이며, 다음 조건을 만족한다.

{w∣w는 s의 부분 문자열이다}={l(e1)l(e2)⋯l(ek)∣(e1,e2,…,ek)는 v0에서 시작하는 G의 경로이다}\{w \mid w \text{는 } s\text{의 부분 문자열이다}\} = \{l(e_1)l(e_2)\cdots l(e_k) \mid (e_1, e_2, \ldots, e_k) \text{는 } v_0\text{에서 시작하는 } G\text{의 경로이다}\}

Oleksandr은 다른 어떤 그래프보다 접미사 오토마타를 더 좋아한다. 방향 비순환 그래프 GG의 각 간선에 소문자를 적고 시작 정점 v0v_0를 골랐을 때 GG가 ss의 접미사 오토마타가 될 수 있으면, 그는 GG를 ss-beautiful하다고 부른다.

Oleksandr은 사전순으로 작은 문자열을 좋아한다. 주어진 그래프 GG에 대해, GG가 ss-beautiful하도록 하는 사전순으로 가장 작은 문자열 ss를 구하라.

입력

첫 줄에 정점 수 nn과 간선 수 mm이 주어진다 (1≤n≤20001 \le n \le 2000, 1≤m≤30001 \le m \le 3000). 이어지는 mm개의 줄에는 vv에서 uu로 향하는 방향 간선을 나타내는 두 정수 vv, uu가 한 줄에 하나씩 주어진다 (1≤v,u≤n1 \le v, u \le n, v≠uv \ne u). 그래프 GG는 비순환임이 보장된다.

출력

GG가 ss-beautiful하도록 하는, 사전순으로 가장 작은 소문자 문자열 ss를 한 줄에 출력한다. 그런 문자열이 없으면 −1-1을 출력한다.

힌트

처음 세 예제에 대한 접미사 오토마타는 아래와 같다.

예제4

  1. 예제 1

    입력
    2 1
    1 2
    
    예상 출력
    a
    
  2. 예제 2

    입력
    4 5
    1 2
    2 3
    1 4
    2 4
    3 4
    
    예상 출력
    aab
    
  3. 예제 3

    입력
    5 5
    1 2
    1 3
    2 3
    3 4
    4 5
    
    예상 출력
    abab
    
  4. 예제 4

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