신촌 통폐합 계획

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

요약
N개의 문자열과 N-1번의 병합 연산이 주어질 때, 한 문자열을 다른 문자열 뒤에 이어 붙이는 과정을 그대로 따라가 최종 문자열을 출력한다.
난이도

보통10점 중 4점

유형
연결 리스트, 구현, 시뮬레이션, 문자열
정답자
아직 제출이 없습니다

문제

극단적인 출산율 감소로 인해 신촌 지역 NN개 대학교가 하나의 학교로 통합되었다.

기나긴 회의 끝에, 통합된 학교의 이름은 NN개 대학교의 이름을 이어 붙여서 정해졌다. 회의에서 통합된 학교의 이름을 정한 방법은 다음과 같다.

NN개 대학교의 이름 s_1,s_2,⋯ ,s_Ns\_1, s\_2, \cdots, s\_N을 일렬로 나열한다. 이후 다음의 과정을 N−1N - 1번 반복한다.

  1. s_i,s_js\_i, s\_j가 빈 문자열이 아닌 서로 다른 두 정수 i,ji, j를 고른다.
  2. s_is\_i의 뒤쪽에 s_js\_j를 이어 붙인다.
  3. s_js\_j를 빈 문자열로 바꾼다.

모든 과정이 끝난 뒤에는 빈 문자열이 아닌 s_ks\_k가 하나 남게 되며, 이때 s_ks\_k가 통합된 학교의 이름이 된다.

NN개 대학교의 이름 s_1,s_2,⋯ ,s_Ns\_1, s\_2, \cdots, s\_N과 회의에서 고른 i,ji, j가 순서대로 주어질 때, 회의를 통해 정해진 통합된 학교의 이름을 구하는 프로그램을 작성해 보자.

입력

첫 번째 줄에 대학교의 개수 NN이 주어진다. (2≤N≤500,000)(2 \leq N \leq 500 \\, 000)

다음 NN개의 줄의 ii번째 줄에 대학교 이름을 의미하는 알파벳 소문자로 이루어진 문자열 s_is\_i가 주어진다. 주어지는 대학교 이름의 길이 합은 500,000500\\,000을 넘지 않는다.

다음 N−1N - 1개의 줄에 회의에서 고른 i,ji, j가 공백을 사이에 두고 차례로 주어진다. (1≤i,j≤N;(1 \leq i, j \leq N; i≠j)i \neq j)

주어지는 순서대로 회의를 진행할 때 s_i,s_js\_i, s\_j가 빈 문자열이 아닌 i,ji, j만 입력으로 주어진다.

출력

첫 번째 줄에 회의를 통해 정해진 통합된 학교의 이름을 출력한다.

예제1

  1. 예제 1

    입력
    5
    sogang
    sookmyung
    yonsei
    ewha
    hongik
    2 3
    1 2
    4 5
    1 4
    
    예상 출력
    sogangsookmyungyonseiewhahongik