4.4 Liczba przełożonych

Matura maj 2026 - Matura z informatyki: arkusze krok po kroku (Python)

Zadanie 4.4 (3 pkt): największa liczba przełożonych jednego pracownika i liczba pracowników z taką liczbą. Liczba przełożonych pracownika to liczba przełożonych jego szefa plus 1. Szef ma mniejszy numer, więc idąc po numerach rosnąco, jego wynik jest już policzony: jedna pętla zamiast rekurencji (przy długich łańcuchach rekurencja przekroczyłaby limit stosu Pythona). Dla pliku przykładowego: `2 49997`.

with open("korpo_przyklad.txt") as f:
    boss = [0] + [int(line) for line in f]  # boss[i] = bezpośredni przełożony pracownika i
n = len(boss) - 1

# 4.2 liczba bezpośrednich podwładnych: ile razy numer występuje jako przełożony
direct = [0] * (n + 1)
for i in range(2, n + 1):
    direct[boss[i]] += 1
no_subordinates = sum(1 for i in range(1, n + 1) if direct[i] == 0)

# 4.3 pracownik z największą liczbą bezpośrednich podwładnych
top = max(range(1, n + 1), key=lambda i: direct[i])

# 4.4 liczba przełożonych = liczba kroków w górę do prezesa; przełożony ma mniejszy numer,
# więc jego wynik jest już policzony i nie trzeba rekurencji
superiors = [0] * (n + 1)
for i in range(2, n + 1):
    superiors[i] = superiors[boss[i]] + 1
most = max(superiors)

print("4.2", no_subordinates)
print("4.3", top, direct[top])
print("4.4", most, superiors.count(most))

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Matura z informatyki: arkusze krok po kroku·Zaloguj się, aby zapisać postęp na koncie.