만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

공정한 문자열

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

요약
각 테스트 케이스에서 S와 T가 부분 문자열로 나타나는 횟수가 같은 문자열만 생성하는 유한 상태 기계를 만들 수 있는지 판단합니다.
난이도

어려움10점 중 9점

유형
문자열 매칭, 수학
정답자
아직 제출이 없습니다

문제

Alice는 문자열을 생성하는 기계를 만든다. 기계에는 1부터 NN까지 번호가 붙은 상태가 NN개 있고, 상태 사이에는 방향이 있는 간선이 있다. 각 간선에는 고정된 문자 집합의 문자 하나가 붙어 있다. 상태 중 일부는 최종 상태이다. 기계는 상태 1에서 출발해 최종 상태에서 끝나는 경로를 따라가며, 지나간 간선의 문자를 순서대로 이어 붙여 문자열을 만든다. 경로는 같은 상태나 같은 간선을 여러 번 지날 수 있다. 최종 상태를 지난 뒤 다시 최종 상태에서 끝나는 것도 가능하다. 자기 자신으로 향하는 간선도 허용되고, 같은 문자로 표시된 간선이 같은 두 상태를 두 개 이상 잇는 것도 허용된다.

Bob이 좋아하는 문자열은 SS이고, Carol이 좋아하는 문자열은 TT이다. Alice는 부분 문자열로 나타나는 SS의 출현 횟수와 TT의 출현 횟수가 같은 문자열만 정확히 생성하는 기계를 만들 수 있는지 알고 싶다. 그런 문자열은 모두 생성하고, 그 밖의 문자열은 하나도 생성하지 않아야 한다. 출현은 서로 겹칠 수 있다. 예를 들어 banana에는 ana가 두 번 나타난다.

그림 H.1은 입력의 첫 번째 테스트 케이스에 해당하는 기계를 보여준다. 정사각형 상태가 최종 상태이다.

입력

첫 줄에 테스트 케이스의 수 KK (1≤K≤501\leq K \leq 50)가 주어진다. 이어지는 KK개의 줄에는 각각 세 문자열 AA, SS, TT가 주어진다. AA는 기계에서 쓸 수 있는 고정된 문자 집합이며, 서로 다른 영문 소문자로 이루어진다. SS는 Bob의 문자열이고, TT는 Carol의 문자열이다. 길이는 1≤∣S∣,∣T∣≤5001\leq |S|,|T|\leq 500을 만족한다. SS와 TT에 나타나는 문자는 모두 AA에 포함된다.

출력

각 테스트 케이스마다 그런 기계를 만들 수 있으면 1, 없으면 0을 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    ab ab ba
    abc ab ba
    cz cczz zzcc
    
    예상 출력
    1
    0
    0