QOJ.ac

QOJ

시간 제한: 10 s 메모리 제한: 512 MB 총점: 100 난이도: [표시] 해킹 가능 ✓

#1222. Polígono

통계

Jiulian é uma garota que gosta de criar problemas.

Depois do World Final deste ano, Jiulian passou a gostar muito de geometria computacional. Por isso, decidiu propor um problema de geometria computacional na NOI: um problema cujo nome é a única parte relacionada à geometria computacional.

Primeiro, Jiulian fornece uma árvore enraizada $T$ com $n$ vértices ($n\ge2$), cuja raiz é o vértice $1$. Uma folha é definida como qualquer vértice de grau exatamente $1$, exceto a raiz. A figura abaixo mostra um exemplo de $T$, cujas folhas são $\{3,4,5\}$.

problem_1222_4ad50e4f8118d17f000f0e94d0ef4de6.png

A partir dessa árvore, Jiulian constrói uma sequência $A$:

  • Faz uma busca em profundidade em toda a árvore a partir da raiz, visitando os filhos em ordem crescente de seus números. Assim, obtém uma ordem DFS de $T$.
  • Em seguida, dispõe todas as folhas numa sequência $A$, na ordem em que aparecem nessa ordem DFS.

Usando a sequência $A$, Jiulian define a distância $d(u,v)$ entre duas folhas $u,v$. Se $u$ é o $i$-ésimo elemento de $A$ e $v$ é o $j$-ésimo, então $d(u,v)=\min(|i-j|,|A|-|i-j|)$. Aqui, $|A|$ é o comprimento da sequência, isto é, o número de folhas de $T$, e $i,j$ são posições contadas a partir de $1$.

No exemplo acima, $A=[4,5,3]$, e $d(3,5)=d(3,4)=d(4,5)=1$. As posições de $3,4,5$ são, respectivamente, $3,1,2$.

Por fim, Jiulian fornece um parâmetro $K$. Usando a árvore enraizada $T$ e a sequência $A$, construímos um grafo não direcionado $G$ com $n$ vértices, sem arestas múltiplas nem laços. Dois vértices distintos $u,v$ são adjacentes se, e somente se, satisfazem pelo menos uma das condições abaixo:

  • Existe uma aresta entre $u,v$ na árvore $T$.
  • Tanto $u$ quanto $v$ são folhas de $T$, e $d(u,v)\le K$.

Para $K=1$ ou $2$, o grafo $G$ correspondente ao exemplo acima é o mostrado abaixo.

problem_1222_c9322c51e74895ce475bb8fe907f20a3.png

Agora, Jiulian quer que você calcule o número de ciclos hamiltonianos distintos de $G$. Como a resposta pode ser muito grande, imprima seu valor módulo $998244353$.

A seguir estão algumas definições complementares:

  • Um ciclo hamiltoniano $H$ de um grafo não direcionado $G$ sem arestas múltiplas nem laços é um subconjunto das arestas de $G$ tal que cada vértice tem exatamente duas arestas incidentes distintas em $H$, e quaisquer dois vértices são alcançáveis entre si, direta ou indiretamente, pelas arestas de $H$.
  • Dois ciclos hamiltonianos $H_1,H_2$ de um grafo não direcionado $G$ sem arestas múltiplas nem laços são distintos se, e somente se, existe uma aresta $e$ que pertence a $H_1$, mas não a $H_2$.

Entrada

Leia os dados do arquivo polygon.in.

A primeira linha contém dois inteiros $n,K$, indicando o número de vértices da árvore $T$ e o parâmetro $K$ escolhido por Jiulian.

A segunda linha contém $n-1$ inteiros $f_i$ ($1\le f_i\le i$), onde $f_i$ indica que existe a aresta $(f_i,i+1)$ na árvore $T$.

Saída

Escreva a saída no arquivo polygon.out.

Imprima uma linha com um inteiro: o número de ciclos hamiltonianos, módulo $998244353$.

Exemplos

Entrada 1

5 1
1 1 2 2

Saída 1

2

Nota

Este exemplo é exatamente o mesmo da descrição do problema. As ordens dos vértices nos dois ciclos hamiltonianos são $(1,2,4,5,3)$ e $(1,2,5,4,3)$.

Subtarefas

Os limites e as propriedades dos casos de teste estão na tabela abaixo:

Caso de teste $n$ $K$ Propriedade especial
$1$ $\le5$ $\le3$ Nenhuma
$2$ $\le10$ $\le3$ Nenhuma
$3$ $\le15$ $\le3$ Nenhuma
$4$ $\le20$ $\le3$ Nenhuma
$5$ $\le1000$ $=1$ A
$6$ $\le1000$ $=1$ A
$7$ $\le1000$ $=1$ A
$8$ $\le1000$ $=1$ Nenhuma
$9$ $\le1000$ $=1$ Nenhuma
$10$ $\le1000$ $=1$ Nenhuma
$11$ $\le1000$ $\le2$ A
$12$ $\le1000$ $\le2$ A
$13$ $\le1000$ $\le2$ A
$14$ $\le1000$ $\le2$ Nenhuma
$15$ $\le1000$ $\le2$ Nenhuma
$16$ $\le1000$ $\le2$ Nenhuma
$17$ $\le1000$ $\le3$ A
$18$ $\le1000$ $\le3$ A
$19$ $\le1000$ $\le3$ Nenhuma
$20$ $\le1000$ $\le3$ Nenhuma

A propriedade A garante que cada vértice da árvore tem no máximo dois filhos.

Para todos os dados, garante-se $1\le f_i\le i$, $2\le n\le1000$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.