QOJ.ac

QOJ

Límite de tiempo: 10 s Límite de memoria: 512 MB Puntuación total: 100 Dificultad: [mostrar] Hackeable ✓

#1222. Polygon

Estadísticas

Jiulian ist ein Mädchen, das gerne Aufgaben entwirft.

Nach dem diesjährigen World Final begeistert sich Jiulian besonders für algorithmische Geometrie und möchte deshalb auch bei der NOI eine Geometrieaufgabe stellen: eine Aufgabe, bei der nur der Name mit algorithmischer Geometrie zu tun hat.

Zunächst gibt Jiulian einen verwurzelten Baum $T$ mit $n$ Knoten und $n\ge2$ vor. Die Wurzel hat die Nummer $1$. Als Blätter bezeichnen wir alle Knoten außer der Wurzel, deren Grad genau $1$ ist. Die folgende Abbildung zeigt einen Beispielbaum $T$ mit der Blattmenge $\{3,4,5\}$.

problem_1222_2ab37c344d249dee3074416f38332948.png

Aus diesem Baum konstruiert Jiulian anschließend eine Folge $A$:

  • Durchlaufe den gesamten Baum ab der Wurzel mit einer Tiefensuche. Besuche die Kinder dabei in aufsteigender Reihenfolge ihrer Nummern. So erhältst du eine DFS-Reihenfolge von $T$.
  • Ordne dann alle Blätter nach ihrem Auftreten in dieser DFS-Reihenfolge von vorne nach hinten an. Dies ergibt die Folge $A$.

Mithilfe der Folge $A$ definiert Jiulian weiter den Abstand $d(u,v)$ zweier Blätter $u,v$: Ist $u$ das $i$-te und $v$ das $j$-te Element von $A$, so ist $d(u,v)=\min(|i-j|,|A|-|i-j|)$. Dabei ist $|A|$ die Länge der Folge, also die Anzahl der Blätter von $T$. Die Positionen $i,j$ werden beginnend mit $1$ gezählt.

Im obigen Beispiel ist $A=[4,5,3]$. Es gilt $d(3,5)=d(3,4)=d(4,5)=1$, und die Positionen von $3,4,5$ sind der Reihe nach $3,1,2$.

Schließlich gibt Jiulian einen Parameter $K$ vor. Aus dem verwurzelten Baum $T$ und der Folge $A$ können wir einen ungerichteten Graphen $G$ ohne Mehrfachkanten und Schleifen mit $n$ Knoten konstruieren. Zwei verschiedene Knoten $u,v$ sind genau dann durch eine Kante verbunden, wenn mindestens eine der folgenden Bedingungen erfüllt ist:

  • Im Baum $T$ gibt es eine Kante zwischen $u,v$.
  • Im Baum $T$ sind $u,v$ beide Blätter, und es gilt $d(u,v)\le K$.

Für $K=1$ oder $K=2$ ergibt das obige Beispiel jeweils den in der folgenden Abbildung gezeigten Graphen $G$:

Jiulian möchte nun, dass du die Anzahl verschiedener Hamiltonkreise in $G$ berechnest. Die Antwort kann groß sein; gib sie modulo $998244353$ aus.

problem_1222_6645fc8308e96b3d0907751505f8a4ad.png

Es folgen einige ergänzende Definitionen:

  • Ein Hamiltonkreis $H$ eines ungerichteten Graphen $G$ ohne Mehrfachkanten und Schleifen ist eine Teilmenge der Kanten von $G$. Jeder Knoten hat genau zwei verschiedene anliegende Kanten in $H$, und je zwei beliebige Knoten sind durch Kanten aus $H$ direkt oder indirekt miteinander erreichbar.
  • Zwei Hamiltonkreise $H_1,H_2$ eines ungerichteten Graphen $G$ ohne Mehrfachkanten und Schleifen sind genau dann verschieden, wenn eine Kante $e$ existiert, die in $H_1$, aber nicht in $H_2$ liegt.

Eingabe

Lies die Daten aus der Datei polygon.in.

Die erste Zeile enthält zwei ganze Zahlen $n,K$, die Anzahl der Knoten von $T$ und Jiulians gewählten Parameter $K$.

Die zweite Zeile enthält $n-1$ ganze Zahlen $f_i$ mit $1\le f_i\le i$. Dabei gibt $f_i$ an, dass der Baum $T$ die Kante $(f_i,i+1)$ enthält.

Ausgabe

Schreibe die Ausgabe in die Datei polygon.out.

Gib eine Zeile mit einer ganzen Zahl aus: der Anzahl der Hamiltonkreise modulo $998244353$.

Beispiele

Eingabe 1

5 1
1 1 2 2

Ausgabe 1

2

Hinweis

Dieses Beispiel ist genau das Beispiel aus der Aufgabenstellung. Die beiden Hamiltonkreise durchlaufen die Knoten in den Reihenfolgen $(1,2,4,5,3)$ beziehungsweise $(1,2,5,4,3)$.

Teilaufgaben

Die Datenbereiche und Eigenschaften der einzelnen Testpunkte stehen in der folgenden Tabelle:

Nummer $n$ $K$ Besondere Eigenschaft
1 $\le5$ $\le3$ Keine
2 $\le10$ $\le3$ Keine
3 $\le15$ $\le3$ Keine
4 $\le20$ $\le3$ Keine
5 $\le1000$ $=1$ A
6 $\le1000$ $=1$ A
7 $\le1000$ $=1$ A
8 $\le1000$ $=1$ Keine
9 $\le1000$ $=1$ Keine
10 $\le1000$ $=1$ Keine
11 $\le1000$ $\le2$ A
12 $\le1000$ $\le2$ A
13 $\le1000$ $\le2$ A
14 $\le1000$ $\le2$ Keine
15 $\le1000$ $\le2$ Keine
16 $\le1000$ $\le2$ Keine
17 $\le1000$ $\le3$ A
18 $\le1000$ $\le3$ A
19 $\le1000$ $\le3$ Keine
20 $\le1000$ $\le3$ Keine

Eigenschaft A garantiert, dass jeder Knoten des Baums höchstens zwei Kinder hat.

Für alle Daten ist garantiert: $1\le f_i\le i$ und $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.