Construction Conflictuelle – Épreuve régionale 2024

Niveau 4 ⋅ Validation weight: 25%

Énoncé

Le long du littoral de Midgard, une multitude de villes sont disputées par les dieux. Souhaitant renforcer leur puissance, les dieux tentent de créer un réseau d'échange routier entre les villes sous leur domination.

On considère ici $D$ dieux, numérotés de 0 à $D - 1$. $N$ villes sont citées le long du littoral, dans le tableau villes. Dans le tableau, on indique pour chaque ville le dieu qui possède le contrôle de la ville.

Il est possible de rajouter une connexion entre deux villes en créant une route reliant les deux villes par le sud.

  • Il est seulement possible de relier deux villes sous le contrôle d'un même dieu ;
  • On ne peut pas relier une ville à plus d'une autre ville ;
  • Il est impossible que deux routes se croisent, car cela engendrerait un conflit entre les dieux concernés.

Aidez Jøsëf Marchand à planifier la construction du plus grand nombre de routes possible, en évitant tout conflit.

Entrée

L’entrée contiendra :

  • Sur la première ligne, un entier : D, le nombre de dieux.
  • Sur la ligne suivante, un entier : N, le nombre de villes.
  • Sur la ligne suivante, une liste de N entiers séparés par des espaces : villes, pour chaque ville, le dieu qui la contrôle.

Sortie

Affichez, sur une ligne, le plus grand nombre de routes que vous pouvez construire sans provoquer le moindre conflit.

Contraintes

  • $1 \le D \le 10$
  • $2 \le N \le 10$
  • $0 \le \text{villes[i]} < D$

Contraintes de performance

  • $1 \le D \le 500$
  • $2 \le N \le 500$

Contraintes d'exécution

Utilisation mémoire maximum
100000 kilo-octets
Temps d'exécution maximum
1000 millisecondes

Exemples d'entrée/sortie

Exemple d'entrée
3
9
0 1 2 1 0 2 0 1 0
Exemple de sortie
3
Commentaire

Dans cet exemple, 9 villes sont départagées entre trois dieux, notés 0, 1 et 2.

Voici une manière de créer trois routes sans générer de conflit :

Description

Aucune intersection n'est présente. Après avoir construit ces trois routes, on ne peut pas relier les villes du dieu 2 sans croiser les routes déjà présentes.

Il est impossible de créer plus que 3 routes sans conflit.

Exemple d'entrée
3
7
0 1 2 0 2 1 0
Exemple de sortie
3
Commentaire

Dans cet exemple, 7 villes sont départagées entre trois dieux, notés 0, 1 et 2.

Voici une manière de créer trois routes sans générer de conflit :

Description

Il est impossible de créer plus que 3 routes sans conflit.