Module: Recherche en profondeur. DFS


Problem

5 /12


graphe biparti

Theory Click to read/hide

Graphe bipartite
 
Graphe bipartite - un graphe dont les sommets peuvent être divisés en deux ensembles de sorte que chaque arête relie le sommets de différents ensembles.


Souvent, dans le contexte des graphes bipartis, le concept de couleurs sommets est utilisé. Diviser un graphe en deux parties s'appelle colorer ses sommets avec deux couleurs différentes. Chaque arête doit relier des sommets d'une couleur différente.

DFS
 

Algorithme

Nous commençons à peindre à partir d'un sommet arbitraire, que nous peignons dans une couleur arbitraire.
En passant le long de chaque arête, peignez le sommet suivant dans la couleur opposée.
Si, en itérant sur des sommets voisins, nous trouvons un sommet qui est déjà peint de la même couleur que le sommet actuel, alors il y a un cycle impair dans le graphe, ce qui signifie qu'il n'est pas bipartite.

Problem

Un graphe est dit biparti si ses sommets peuvent être colorés en deux couleurs de sorte qu'il n'y ait pas d'arêtes reliant des sommets de la même couleur (c'est-à-dire que chaque arête va du sommet de la 1ère couleur au sommet de la 2ème) .
Étant donné un graphique. Il est nécessaire de vérifier s'il est bipartite, et si oui, de colorer ses sommets.
 
Entrée
La première ligne contient d'abord le nombre N - le nombre de sommets du graphe (ne dépasse pas 100). Vient ensuite la matrice d'adjacence - une matrice NxN de 0 et 1 (0 signifie pas de bord, 1 signifie présence). Le graphe est non orienté, sans boucles.
 
Mentions légales
Sur la première ligne imprimez l'un des messages OUIou NON (selon que le graphe est bipartite ou non). Si la réponse est OUI, sur la deuxième ligne, imprimez N nombres - les couleurs pour colorer les sommets : pour la première couleur, utilisez la valeur 1, pour le deuxième couleur - la valeur 2. Le premier sommet doit être de couleur 1.
 
Exemples
3
0 1 1
1 0 1
1 1 0
3
0 1 1
1 0 0
1 0 0
OUI
1 2 2
# Entrée Sortie
1 NON
2