72122024-01-03 16:31:31CsongiRácsháló gráfpython3Hibás válasz 0/5035ms13592 KiB
def inicializalas_racshalo(sorok, oszlopok):
    return [[i * oszlopok + j + 1 for j in range(oszlopok)] for i in range(sorok)]

def min_lepesek_megkereses(racshalo, kezdo, veg):
    latogatott = set()
    sor = [(kezdo, 0)]

    while sor:
        aktualis, lepesek = sor.pop(0)
        if aktualis == veg:
            return lepesek

        if aktualis not in latogatott:
            latogatott.add(aktualis)

            sor_idx, oszlop_idx = divmod(aktualis - 1, len(racshalo[0]))

            # Szomszédok hozzáadása a sorban és oszlopban
            szomszedok = [(sor_idx - 1, oszlop_idx), (sor_idx + 1, oszlop_idx), (sor_idx, oszlop_idx - 1), (sor_idx, oszlop_idx + 1)]
            for r, c in szomszedok:
                if 0 <= r < len(racshalo) and 0 <= c < len(racshalo[0]):
                    sor.append((racshalo[r][c], lepesek + 1))

    return -1  # Nem sikerült eljutni a célponthoz

def main():
    sorok, oszlopok, elenk_szam = map(int, input().split())
    racshalo = inicializalas_racshalo(sorok, oszlopok)
    
    for _ in range(elenk_szam):
        elenk_kezdo, elenk_veg = map(int, input().split())
        min_lepesek = min_lepesek_megkereses(racshalo, elenk_kezdo, elenk_veg)
        print(min_lepesek)

main()
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/017ms11368 KiB
2Hibás válasz0/035ms11684 KiB
3Hibás válasz0/217ms11728 KiB
4Hibás válasz0/217ms11848 KiB
5Hibás válasz0/217ms12144 KiB
6Hibás válasz0/217ms12124 KiB
7Hibás válasz0/218ms12324 KiB
8Hibás válasz0/218ms12388 KiB
9Hibás válasz0/219ms12984 KiB
10Hibás válasz0/218ms13076 KiB
11Hibás válasz0/218ms13004 KiB
12Hibás válasz0/223ms13096 KiB
13Hibás válasz0/328ms12844 KiB
14Hibás válasz0/319ms13288 KiB
15Hibás válasz0/328ms12828 KiB
16Hibás válasz0/318ms13124 KiB
17Hibás válasz0/326ms12872 KiB
18Hibás válasz0/325ms13496 KiB
19Hibás válasz0/318ms13220 KiB
20Hibás válasz0/317ms13592 KiB
21Hibás válasz0/326ms13292 KiB
22Hibás válasz0/334ms13576 KiB