Logo
(追記) (追記ここまで)

31420번 - 문자열 - 그래프 매칭

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 (추가 시간 없음) 1024 MB (추가 메모리 없음)178746646.154%

문제

다음과 같은 방식으로 알파벳 소문자로 이루어진 문자열을 이용해 그래프를 만들 수 있다.

  1. 알파벳 소문자 a부터 z까지에 대응되는 정점을 만든다.
  2. 길이가 $L$인 문자열 $S$를 $S_1S_2S_3\cdots S_L$로 나타냈을 때, $L-1$ 이하인 모든 양의 정수 $i$에 대해 $S_i \to S_{i+1}$인 간선을 그래프에 추가한다. 이때 같은 간선이 여러 개일 경우 한 개만 추가한다.

알파벳 소문자에 대응되는 정점들로 이루어진 그래프와 문자열 $T$가 주어졌을 때, 위 변환 과정을 통해 주어진 그래프와 동일한 그래프가 만들어지는 $T$의 부분 문자열의 개수를 구하시오.

여기서 부분 문자열이란, 문자열의 앞뒤에서 원하는 길이만큼 잘라서 얻을 수 있는 길이 1ドル$ 이상의 문자열을 의미한다. 예를 들어 abcde라는 문자열이 있을 때, cdabc는 부분 문자열이지만, bd는 문자열의 앞 뒤에서 어떤 길이로 잘라내도 얻어낼 수 없으므로 부분 문자열이 아니다.

입력

첫 번째 줄에 문자열의 길이를 나타내는 정수 $N$이 주어진다. $(2 \le N \le 2,円 000,000円)$

두 번째 줄에 문자열 $T$가 주어진다. $T$는 알파벳 소문자로만 이루어진 길이 $N$짜리 문자열이다.

세 번째 줄에 그래프의 간선 개수를 나타내는 정수 $M$이 주어진다. $(1 \le M \le 26^2)$

네 번째 줄부터 $(M + 3)$번째 줄까지 그래프의 간선을 나타내는 알파벳 소문자 2ドル$개가 공백 없이 주어진다.

1ドル \le i \le M$인 $i$에 대해 $(i + 3)$번째 줄에 $x_iy_i$가 입력으로 주어졌다면 이는 $x_i \to y_i$인 간선을 의미한다. $x_i$와 $y_i$는 같은 문자일 수 있으며, 같은 간선이 여러 번 주어지지 않는다. 주어지는 간선은 방향이 있는 간선임에 유의한다.

출력

첫 번째 줄에 지문에서 언급된 그래프 변환 과정을 거쳤을 때 동일한 그래프가 만들어지는 문자열 $T$의 부분 문자열의 개수를 출력한다.

제한

예제 입력 1

10
raararaara
3
ra
aa
ar

예제 출력 1

25

예제 입력 2

10
raararaara
2
ra
ar

예제 출력 2

7

힌트

출처

University > 신촌지역 대학생 프로그래밍 대회 동아리 연합 > 2024 신촌지역 대학생 프로그래밍 대회 동아리 연합 겨울 대회 (SUAPC 2024 Winter) E번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /