#!/usr/bin/python NEPROSLE = -1 # Značí, že vrchol nebyl navštíven n = input("Počet dětí: ") deti = n * [0] # Hrana (u,v) <==> deti[u] == v cas_vstupu = n * [NEPROSLE] # Kdy jsme vstoupili do vrcholu poprvé for i in range(n): deti[i] = input("Koho chytá dítě č.%d: " % i) cas = 1 soucet = 0 for i in range(n): # Značíme čas vstupu do prvního prozkoumaného vrcholu zacatek_faze = cas # Dokud jdeme po neprozkoumaných vrcholech while cas_vstupu[i] == NEPROSLE: cas_vstupu[i] = cas # Zapíšeme čas prvniho vstupu do vrcholu i = deti[i] # Podíváme se, kam z něj vede hrana cas += 1 if cas_vstupu[i] >= zacatek_faze: # narazili jsme na vrchol prošlý v této fázi => cyklus soucet += cas - cas_vstupu[i] print "Počet dětí, které mohou chytat samy sebe:",soucet