BFS 그래프 개수 세기
시간 제한2초메모리 제한1024 MB
N개의 노드를 가진 단순 무방향 그래프 중 1번 노드에서 BFS를 실행했을 때 방문 순서가 주어진 배열 A와 같은 그래프의 개수를 998244353으로 나눈 나머지로 구합니다.
문제
너비 우선 탐색(BFS)이라는 그래프 탐색 알고리즘을 연구하고 있다. 부터 까지 번호가 매겨진 개의 노드로 이루어진 그래프를 생각하자. 그래프는 인접 행렬 으로 주어지며, 가 이면 노드 에서 노드 로 이동할 수 있고, 그렇지 않으면 는 이다. 이 알고리즘은 노드를 방문한 순서를 출력한다.
BFS(M[1..N][1..N]):
let A be an empty array
let Q be an empty queue
append 1 to A
push 1 to Q
while Q is not empty:
pop the front element of Q into u
for v = 1 to N:
if M[u][v] == 1 and v is not in A:
append v to A
push v to Q
return A
부터 까지의 순열이고 인 배열 가 주어진다. 를 만족하는 개의 노드를 가진 단순 무방향 그래프의 인접 행렬 의 개수를 구하라. 답은 으로 나눈 나머지를 출력한다.
단순 그래프는 자기 루프가 없고(, ), 두 노드를 잇는 간선은 최대 하나이다. 무방향 그래프에서는 인 모든 에 대해 이다. 인접 행렬이 다르면 서로 다른 그래프로 본다.
입력
첫 줄에 정수 ()이 주어진다.
둘째 줄에 정수 가 개 주어진다. 배열 는 부터 까지의 순열이며, 이다.
출력
를 만족하는 개의 노드를 가진 단순 무방향 그래프의 개수를 으로 나눈 나머지를 출력한다.