Skip to content

Aurélien STRIDE

  • Projets personnels
    • Projets Web personnels
    • Language-of.love
    • Squary Movey / Taiketsu-Doku
    • Sudokube / Wordokube / Linkube
    • Recyclage Augmenté
    • Réflexions en 3D
    • Fièvre de cheval du samedi soir
    • Concours divers
  • Dessins
    • 1998 – Arts Appliqués
    • Actualités
    • Compteurs d’eau
    • Divorce
    • Enquêtes
    • GPS
    • Immobilier
    • Informatique
    • Psycho
    • SNCF
    • Vie de couple
    • Dessins divers
  • Musiques
    • 2016 – Oxydoréduction
    • 2012-Maint. – Mashups
    • 2008-2016 – Indaba Remixes
    • 2013 – Live @ Mistral Palace
    • 2012 – Symphonie Electronique
    • 2010 – Metric : Fantasies
    • 2008 – Marcy Playground : Leaving Wonderland
    • 2008-2010 – Ganadji-Nesis
    • 2008-2009 – Mandalas
    • 2007-2009 – Electrons Libres
    • 2006-2007 – Manifest for a generation
    • 2003 – De Inferni Profundis
    • 1997 – MODified
    • Par genre
      • Ambient
      • Jazz
      • Hip-Hop
      • Nightclub
    • Morceaux non classés
    • Vidéos musicales
    • Playlist Soirée Château de Fitou
  • Travaux graphiques
    • Affiches / Flyers
    • Cartes de visite
    • Jaquettes CD-DVD
    • Logos & Bannières
    • Photomontages
    • Sketchups
    • Weavesilk
  • Tutoriels
    • Les outils du dépanneur informatique
    • Liste de mes programmes favoris
    • L’installation idéale d’un OS
    • Installer un serveur web sous Unix
  • Liens favoris
  • Road Trip

Aurélien STRIDE

Life & Works

kSkill : degrés de relation

22 octobre 2019 by webmaster
<?php
function main()
{
	$stdin = fopen('php://stdin', 'r');
	$stdout = fopen('php://stdout', 'w');
	//Write your code here ...
	
	// Lecture des 2 protagonistes
	$infos=trim(fgets($stdin));
	$t=explode(';', $infos);
	$individu1=$t[0];
	$individu2=$t[1];
	$nb=$t[2];
	
	$tRels=array();
	for($i=0;$i<$nb;$i++)
	{
		$infos=trim(fgets($stdin));
		$t=explode(';', $infos);
		if(!isset($tRels[$t[0]]))
		{
			$individu=new Individu();
			$individu->Nom = $t[0];
			$tRels[$t[0]]=$individu;
		}
		
		if(!isset($tRels[$t[1]]))
		{
			$individu=new Individu();
			$individu->Nom = $t[1];
			$tRels[$t[1]]=$individu;
		}
		
		$tRels[$t[0]]->addRelation($tRels[$t[1]]);
		$tRels[$t[1]]->addRelation($tRels[$t[0]]);
	}
	
	// Recherche dans les relations de l'individu 1
	$tniveaux=0;
	foreach($tRels[$individu1]->Relations as $Nom => $individu)
	{
		if($individu->Nom==$individu2)
		{
			$tNiveaux[]=1;
			break;
		}
		// Si pas déjà cherché, on recherche parmi les relations de l'individu, 
		// pour éviter les boucles infinies...
	
		$b = $individu->FindIndividu($individu1, 2, array($individu->Nom ));
		
		// Trouvé : on sort
		if($b) 
			$tNiveaux[] = $b;
	}
	
	sort($tNiveaux);
	
	fwrite($stdout, $tNiveaux[0]);
	
	fclose($stdout);
	fclose($stdin);
}

// Classe de gestion d'individu
class Individu
{
	public $Nom='';
	public $Relations=array();
	
	// Ajout d'une relation
	// --> Tableau d'instances de classe
	public function addRelation(& $individu)
	{
		$this->Relations[$individu->Nom] = $individu;
	}
	
	// Recherche récursive
	public function FindIndividu($aChercher, $niveau, $tDeja)
	{
		$tDeja[]=$this->Nom;
		$b=false;
		
		foreach($this->Relations as $Nom => $individu)
		{
			// Si trouvé, on renvoit le niveau et on sort avec True
			if(!in_array($individu->Nom, $tDeja))
			{
				if($individu->Nom==$aChercher)
				{
					return $niveau;
				}
				// Si pas déjà cherché, on recherche parmi les relations de l'individu, 
				// pour éviter les boucles infinies...
			
				$b = $individu->FindIndividu($aChercher, $niveau+1, $tDeja);
			}
			// Trouvé : on sort
			if($b) 
				return $b;
		}
		
		return 0;
	}
}

main();
?>

Voir le challenge

Post navigation

Previous Post:

L’avenir de l’automobile citadine.

Next Post:

Quelques belles voitures croisées de-ci de-là

[Mashup] Canned Heat meets Mar-Keys - Let's work last night
[Remix] Skype Ringtone
  • Blog
  • Dessins
    • 1998 - Arts Appliqués
    • Actualités
    • Compteurs d'eau
    • Dessins divers
    • Divorce
    • Enquêtes
    • GPS
    • Immobilier
    • Informatique
    • Psycho
    • SNCF
    • Vie de couple
  • Ecrits
    • Chanson : Albinoni mélancolique
    • Chanson : Igor le fantôme
    • Chanson : J'ai besoin de vacances...
    • Chanson : Leave me alone
    • Livre : Discours pour la Présidence
    • Livre : L'affaire des brosses à dents
    • Livre : Le lycanthrope contemporain
    • Livre : Mon perfectionnisme
    • Livre : My Ultimate Fonts Collection
    • Poème : Amour
    • Poème : Au revoir
    • Poème : Dévouement
    • Poème : Everlasting
    • Poème : Infidèle
    • Poème : La route est longue
    • Poème : Messages
    • Poème : Ô Nuit
    • Poème : Regard
    • Poème : Romance
    • Poème : Sadness
    • Poème : Un inadapté
    • Poème : Vouloir mourir
    • Poème : Voyage Initiatique
  • Emploi
    • 1999 - Menuisier chez Manpower
  • Liens favoris
  • Musiques
    • 1997 - MODified
    • 2003 - De Inferni Profundis
    • 2006-2007 - Manifest for a generation
    • 2007-2009 - Electrons Libres
    • 2008 - Marcy Playground : Leaving Wonderland
    • 2008-2009 - Mandalas
    • 2008-2010 - Ganadji-Nesis
    • 2008-2016 - Indaba Remixes
    • 2010 - Metric : Fantasies
    • 2011-2013 - Liaisons Covalentes
    • 2012 - Symphonie Electronique
    • 2012-2023 - Mashups
    • 2013-2015 - Lives @ Mistral Palace
    • 2016 - Music Maker Jam (Android)
    • 2016 - Oxydoréduction
    • Morceaux non classés
    • Par genre
      • Ambient
      • Disco
      • Hip-Hop
      • Jazz
      • Nightclub
      • Playlist Soirée Château de Fitou
    • Vidéos musicales
  • Projets personnels
    • Concours divers
    • Fièvre de cheval du samedi soir
    • Language-of.love
    • Projets Web personnels
    • Recyclage Augmenté
    • Réflexions en 3D
    • Squary Movey / Taiketsu-Doku
    • Sudokube / Wordokube / Linkube
  • Qui suis-je ?
  • Travaux graphiques
    • Affiches / Flyers
    • Cartes de visite
    • Jaquettes CD-DVD
    • Logos & Bannières
    • Photomontages
    • Sketchups
    • Weavesilk
  • Tutoriels
    • Installer un serveur web sous Unix
    • L'installation idéale d'un OS
    • Les outils du dépanneur informatique
    • Liste de mes programmes favoris
© 2025 Aurélien STRIDE - Powered by Minimalisticky