QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 2048 MB Total points: 100

#8852. Autoassemblage

Statistics

Automatic Chemical Manufacturing expérimente un procédé appelé autoassemblage. Dans ce procédé, des molécules ayant une affinité naturelle les unes pour les autres sont mélangées dans une solution et peuvent s’assembler spontanément en structures plus grandes. Mais il y a un problème : parfois les molécules s’assemblent en une structure de taille non bornée, ce qui encrasse les machines.

Vous devez écrire un programme qui détermine si une collection donnée de molécules peut être assemblée en une structure de taille non bornée. Vous devez faire deux hypothèses simplificatrices : 1) le problème se limite à deux dimensions, et 2) chaque molécule de la collection est représentée par un carré. Les quatre côtés du carré représentent les surfaces sur lesquelles la molécule peut se connecter à d’autres molécules compatibles.

Dans chaque cas de test, vous recevrez un ensemble de descriptions de molécules. Chaque type de molécule est décrit par quatre étiquettes de connexion de deux caractères, indiquant comment ses côtés peuvent se connecter aux côtés d’autres molécules. Il existe deux types d’étiquettes de connexion :

  • Une lettre majuscule (A, ..., Z) suivie de + ou de -. Deux côtés sont compatibles si leurs étiquettes ont la même lettre mais des signes différents. Par exemple, A+ est compatible avec A-, mais pas avec A+ ni avec B-.

  • Deux chiffres zéro 00. Un côté portant cette étiquette n’est compatible avec aucun côté (pas même avec un autre côté étiqueté 00).

Supposez qu’il existe une quantité illimitée de molécules de chaque type, qui peuvent être tournées et réfléchies. Lorsque les molécules s’assemblent en structures plus grandes, les côtés de deux molécules ne peuvent être adjacents que s’ils sont compatibles. Il est permis qu’un côté, quelle que soit son étiquette de connexion, ne soit connecté à rien (sans molécule adjacente sur ce côté).

La figure A.1 montre un exemple de trois types de molécules et d’une structure de taille bornée pouvant être assemblée à partir de celles-ci (cet ensemble de molécules permet aussi d’autres structures bornées).

problem_8852_149f15990c8350b340b82ed53cd8ac58.png

Figure A.1 : Illustration de l’entrée de l’exemple 1.

Entrée

L’entrée contient un unique cas de test. Un cas de test comporte deux lignes. La première contient un entier $n$ ($1 \le n \le 40\,000$), indiquant le nombre de types de molécules. La deuxième ligne contient $n$ chaînes de huit caractères, décrivant chacune un type de molécule, séparées par une seule espace. Chaque chaîne consiste en quatre étiquettes de connexion de deux caractères représentant les quatre côtés de la molécule dans le sens horaire.

Sortie

Affichez le mot unbounded si l’ensemble des types de molécules peut engendrer une structure de taille non bornée. Sinon, affichez le mot bounded.

Exemples

Entrée 1

3
A+00A+A+ 00B+D+A- B-C+00C+

Sortie 1

bounded

Entrée 2

1
K+K-Q+Q-

Sortie 2

unbounded

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.