Programozó versenyek

DEIK Regionális Programozó Csapatverseny, egyetemi kategória, 2023. december 3.

2023. december 3. 10:00 – 2023. december 3. 15:30

Tűzfal

Az adatok titkosítása egy dolog, de nem sokat érünk vele ha a támadók képesek behatolni a rendszereinkbe és esetlegesen letörölni minden létező fájlt. Így elengedhetetlen, hogy helyes tűzfalbeállításokkal korlátozzuk a rendszereink hozzáférhetőségét, illetve, hogy baj esetén azonnal tudjunk reagálni. A feladatunk így nem más, minthogy kibervédelmi szakértőként egy vírus bejutását követően minél jobban megakadályozzuk annak terjedését oly módon, hogy a hálózat egy pontját tűzfallal lezárjuk, így a vírus nem képes arra tovább haladni. A következő ismeretekkel rendelkezünk:

  • A hálózat routerekből (csúcsok) áll, melyek öszekapcsolódhatnak egymással (élek). A csúcsokat pozitív egész számokkal jelöljük és a jelölés egyedi.
  • A vírus a hálózat bármely pontján megjelenhet, de mindig szigorúan egyetlen routeren lép be. A belépési pont ismert.
  • A vírus képes a routerek közötti kábeleken terjedni, így bármelyik olyan routert elérheti mely közetlenül össze van kötve egy már megfertőzött routerrel.
  • A vírus nem képes átterjedni arra a routerre melyre tűzfalat telepítettünk.
  • Az támadás egyetlen pillanat alatt zajlik le, így csupán egyetlen routerre van időnk tűzfalat telepíteni.
  • A belépési pont már "elveszett", így arra nem telepíthetünk tűzfalat.
A feladat az, hogy egy megadott hálózati infrastruktúra és belépési pont ismeretében megmondjuk azt az egyetlen routert melyre tűzfalat kell telepítenünk ahhoz, hogy a vírus a lehető legkevesebb routert tudja megfertőzni. Ha több ilyen router is a rendelkezésünkre áll, úgy a legkisebb számú kerüljön kiírásra.

Input

A bemenet négy egységből áll:

  • Az első sor egy pozitív egész n és a routerek számát adja meg.
  • A második sor a vírus belépési e pontját adja meg.
  • A harmadik sor a routerek közötti élek m számát adja meg.
  • A következőő m darab sor mindegyike egy szóközzel elválasztott számpár, mely az éleket írja le (például 2 5 azt jelenti, hogy a 2-es és 5-ös router össze van kötve).

Output

A kimenet egyetlen egész szám, mely a fentiek ismeretében megmondja, hogy melyik routerre telepítsünk tűzfalat ahhoz, hogy a vírus terjedését követően a lehető legkevesebb router fertőződjön meg. A tűzfallal ellátott router is "tisztának" számít, így legalább 1 routert mindig meg tudunk védeni. Ha több lehetőség közül választhatunk akkor a legkisebbet írjuk ki.

Megkötések

  • n legfeljebb 500
  • m legfeljebb 800
  • a routerek számozása folytonos: 0,1,2,...,n-1
  • előfordulhatnak különálló, nem összekötött routercsoportok is, melyek között a vírus nem tud átterjedni
  • a feladat jól definiált, azaz az élek tényleg valós routereket kötnek össze, két router között max. 1 él haladhat, és az élek irányítatlanok (a vírus mindkét irányba eljuthat)

Példa

Input:
  1. 8
  2. 0
  3. 7
  4. 0 1
  5. 1 2
  6. 2 3
  7. 0 4
  8. 4 5
  9. 5 6
  10. 6 7
letöltés szöveges állományként Output:
  1. 4
letöltés szöveges állományként

Magyarázat

  1. 0-1-2-3
  2.  \
  3.   [4]-ok(5)-ok(6)-ok(7)
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2024.09.30.