QOJ.ac

QOJ

時間限制: 5 s 記憶體限制: 512 MB 總分: 100

#16302. Arbre bicolore

统计

Dans le jardin de Bajtazar pousse un arbre. Il est constitué de $n$ nœuds, numérotés de $1$ à $n$, où $n$ est pair, et possède $n - 1$ branches, chacune reliant directement deux nœuds. De plus, comme c'est généralement le cas dans les arbres, il existe exactement un chemin constitué de branches non répétées entre chaque paire de nœuds.

À Byteland, le jour du drapeau approche, et Bajtazar a décidé de colorier la moitié des nœuds de son arbre en blanc et l'autre moitié en noir, afin qu'il ressemble au drapeau de Byteland (comme les habitants de Byteland apprécient l'harmonie et la symétrie, leur drapeau est composé pour moitié de blanc et pour moitié de noir). Nous appelons un tel coloriage un coloriage de drapeau.

Bajtazar ne serait pas lui-même s'il n'avait pas ses caprices. Il a déclaré que la beauté d'un coloriage de drapeau dépend de la somme des distances entre toutes les paires de nœuds de la même couleur, où par distance entre une paire de nœuds, nous entendons le nombre de branches sur le chemin les reliant.

Bajtazar souhaite que cette somme soit la plus grande possible. Aidez-le à trouver cette somme maximale ainsi qu'un coloriage de drapeau qui l'atteint !

Entrée

La première ligne de l'entrée contient un nombre pair $n$ ($1 \le n \le 10^6$) représentant le nombre de nœuds dans l'arbre. Les $n-1$ lignes suivantes contiennent la description des branches. La $i$-ième de ces lignes (pour $1 \le i \le n-1$) contient deux entiers $a_i, b_i$ ($1 \le a_i, b_i \le n, a_i \neq b_i$) signifiant que les nœuds $a_i$ et $b_i$ sont directement reliés par une branche.

Sortie

La première ligne de la sortie doit contenir la somme maximale des distances entre les paires de nœuds de la même couleur dans un coloriage de drapeau de l'arbre donné. La deuxième ligne doit contenir une chaîne de $n$ caractères décrivant le coloriage de drapeau qui atteint cette somme. Dans cette chaîne, le $i$-ième caractère (pour $1 \le i \le n$) est 0 si le nœud $i$ est colorié en blanc, ou 1 s'il est colorié en noir.

Exemples

Entrée 1

6
1 2
2 4
2 3
1 5
5 6

Sortie 1

14
011001

Remarque

Explication de l'exemple : L'arbre de l'exemple ci-dessus est représenté dans la figure ci-dessous. Les nœuds sont coloriés selon la sortie de l'exemple donnée ci-dessus. Les chemins entre les nœuds blancs sont les chemins entre les nœuds 1 et 5 (longueur 1), 1 et 4 (longueur 2), et 5 et 4 (longueur 3). Les chemins entre les nœuds noirs sont les chemins entre les nœuds 2 et 3 (longueur 1), 2 et 6 (longueur 3), et 3 et 6 (longueur 4). La somme totale des longueurs de ces chemins est $1 + 2 + 3 + 1 + 3 + 4 = 14$. Il peut être vérifié qu'il n'est pas possible d'obtenir une somme plus grande des longueurs de chemins entre les nœuds de la même couleur.

Diagramme de l'arbre

Testy przykładowe

Test 0a est le test de l'exemple ci-dessus. En outre :

0b : $n = 16$ et le nœud $i$ est relié par une branche au nœud $i-2$, pour $3 \le i \le n$. De plus, le nœud 8 est relié par une branche au nœud 9.

0c : $n = 24$ et tous les nœuds numérotés plus grands que 1 sont reliés par une branche au nœud 1.

0d : $n = 5000$ et les nœuds numérotés de 3 à 2501 sont reliés par une branche au nœud 1, les nœuds numérotés de 2502 à 5000 sont reliés par une branche au nœud 2. De plus, le nœud 1 est relié par une branche au nœud 2.

0e : $n = 100\,000$ et le nœud $i$ est relié par une branche au nœud $i-1$, pour $2 \le i \le n$.

0f : $n = 1\,000\,000$ et le nœud $i$ est relié par une branche au nœud $\lfloor i/2 \rfloor$, pour $2 \le i \le n$.

Ocenianie

Sous-tâche Contraintes Points
1 $n \le 16$ 7
2 $n \le 24$ 12
3 chaque nœud est relié à au plus deux autres nœuds 9
4 chaque nœud est relié à au plus trois autres nœuds 21
5 $n \le 5000$ 19
6 $n \le 100\,000$ 13
7 aucune contrainte supplémentaire 19

Si seule la première ligne de votre réponse est correcte, votre solution recevra 50 % des points pour le test donné. Vous n'avez pas besoin d'imprimer la deuxième ligne pour recevoir ces points.

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.