Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pa:laboratoare:laborator-07 [2026/04/21 00:43]
radu.nichita
pa:laboratoare:laborator-07 [2026/04/21 00:56] (current)
radu.nichita [6) Giant Pizza]
Line 451: Line 451:
 ====== Pool probleme (pentru prezentări) ====== ====== Pool probleme (pentru prezentări) ======
  
-======= 1) Planets and Kingdoms ​=======+======= 1) Longest Flight Route  ​=======
  
-**Enunț:** Se consideră un graf orientat cu ''​N'' ​planete ​și ''​M'' ​rute de zborO rută ''​→ b''​ indică faptul că există zboruri ​de la planeta ''​a'' ​la planeta ​''​b''​. ​Două planete fac parte din același „regat” dacă există ​drumuri în ambele direcții între ele (direct sau indirect). Se cere determinarea numărului de regate și atribuirea unui identificator de regat pentru fiecare planetă în parte.+**Enunț:** Se consideră un graf orientat ​aciclic (DAG) cu ''​n'' ​orașe ​și ''​m'' ​zboruriCerințeste să se determine cel mai lung traseu posibil ​de la orașul 1 la orașul ​''​n''​. ​Traseul reprezintă secvența de orașe vizitate. Dacă există ​mai multe trasee de lungime maximă, oricare variantă este acceptată.
  
-**Date de intrare:​** ​Numerele ​''​N''​ și ''​M''​, urmate de ''​M''​ linii ce conțin ​muchiile orientate.+**Date de intrare:​** ​Prima linie conține două numere întregi ​''​n''​ și ''​m''​. Următoarele ​''​m''​ linii conțin ​perechi de noduri ''​a''​ și ''​b'',​ reprezentând un zbor orientat de la orașul ''​a''​ la orașul ''​b''​.
  
-**Date de ieșire:​** ​Numărul de componente tare conexe ​(regate), urmat de identificatorul componentei ​pentru fiecare planetă ​în parte.+**Date de ieșire:​** ​Prima linie va conține un număr întreg reprezentând numărul maxim de orașe vizitate. A doua linie va conține secvența de orașe din traseul găsit, separate prin spațiu. Dacă nu există niciun drum valid de la 1 la ''​n'',​ se va afișa textul "​IMPOSSIBLE"​. 
 + 
 +Problema se poate testa la: \\ 
 +[[https://​cses.fi/​problemset/​task/​1680 | CSES - Longest Flight Route]] 
 + 
 +======= 2) Planets and Kingdoms ======= 
 + 
 +**Enunț:** Se consideră un graf orientat cu ''​n''​ planete și ''​m''​ rute de zbor. O rută ''​a → b''​ indică faptul că se poate zbura de la planeta ''​a''​ la planeta ''​b''​. Două planete fac parte din același „regat” dacă există drumuri în ambele direcții între ele (direct sau indirect). Să se determine numărul total de regate și să se atribuie fiecărei planete un identificator de regat. 
 + 
 +**Date de intrare:** Prima linie conține două numere întregi ''​n''​ și ''​m''​. Următoarele ''​m''​ linii conțin câte două numere întregi ''​a''​ și ''​b''​reprezentând o rută de zbor orientată de la ''​a''​ la ''​b''​. 
 + 
 +**Date de ieșire:** Afișați pe prima linie numărul de regate. Pe a doua linie, afișați ​pentru fiecare planetă ​identificatorul regatului din care face parte. ​(indexare de la 1, se acceptă orice soluție validă)
  
 Problema se poate testa la: \\ Problema se poate testa la: \\
 [[https://​cses.fi/​problemset/​task/​1683 | CSES - Planets and Kingdoms]] [[https://​cses.fi/​problemset/​task/​1683 | CSES - Planets and Kingdoms]]
  
-======= ​2) Critical Connections in a Network =======+======= ​3) Critical Connections in a Network =======
  
-**Enunț:** Se dă o rețea de ''​N''​ noduri (servere) numerotate de la 0 la ''​- 1'',​ conectate prin conexiuni bidirecționale. O conexiune este critică dacă eliminarea ei crește numărul de componente conexe (adică rețeaua devine mai puțin conectată). ​Se cere sirea tuturor conexiunilor ​critice din rețea.+**Enunț:** Se dă o rețea de ''​n''​ noduri (servere) numerotate de la 0 la ''​- 1'',​ conectate prin conexiuni bidirecționale. O conexiune este considerată „critică” dacă eliminarea ei crește numărul de componente conexe (adică rețeaua devine mai puțin conectată). ​Cerința este de a si toate conexiunile ​critice din rețea.
  
-**Date de intrare:​** ​Numărul ''​N'',​ urmat de o listă ​cu muchiile ​bidirecționale ​existente între servere.+**Date de intrare:​** ​Un număr întreg ​''​n''​, reprezentând numărul de servere, urmat de o listă ​de muchii ​bidirecționale ​care definesc conexiunile din rețea.
  
-**Date de ieșire:** O listă a tuturor ​muchiilor ​critice ​găsite.+**Date de ieșire:** O listă a tuturor ​conexiunilor ​critice ​identificate în rețea.
  
 Problema se poate testa la: \\ Problema se poate testa la: \\
 [[https://​leetcode.com/​problems/​critical-connections-in-a-network/​ | LeetCode - Critical Connections in a Network]] [[https://​leetcode.com/​problems/​critical-connections-in-a-network/​ | LeetCode - Critical Connections in a Network]]
  
-======= ​3) Planets Cycles =======+======= ​4) Planets Cycles =======
  
-**Enunț:** Se dau ''​N''​ planete. Fiecare ​planetă ​are exact o muchie orientată către o altă planetă (posibil ​chiar către ea însăși). Pornind dintr-o planetă, ​traseul continuă strict ​pe muchia curentă. Pentru fiecare planetă, se cere determinarea numărului de planete diferite ​vizitate înainte de a intra într-un ciclu repetitiv.+**Enunț:** Se dau ''​n''​ planete, fiecare ​planetă ​având ​exact o muchie orientată către o altă planetă (se poate indica ​chiar către ea însăși). Pornind dintr-o planetă, ​un explorator va continua să sară pe următoarea conform muchiei. Pentru fiecare planetă, se cere să determini câte planete diferite ​va vizita exploratorul până când ajunge pe o planetă deja văzută.
  
-**Date de intrare:​** ​Numărul ''​N''​, urmat de un vector ''​t_1,​ t_2, ..., t_N'',​ unde informația reprezintă o muchie direcționată de la ''​i'' ​la ''​t_i''​.+**Date de intrare:​** ​Prima linie conține un număr întreg ​''​n''​. A doua linie conține ​un vector ​de ''​n''​ elemente ​''​t_1,​ t_2, ..., t_n'',​ unde valoarea ''​t_i''​ indică destinația muchiei orientate care pleacă din planeta ​''​i'' ​(adică ​''​i → t_i''​).
  
-**Date de ieșire:​** ​Pentru ​fiecare nod, numărul de noduri vizitate înainte de a intra într-un ciclu repetitiv.+**Date de ieșire:​** ​Afișați o singură linie cu ''​n''​ numere întregi: pentru ​fiecare nod, afișați ​numărul de noduri vizitate înainte de a repeta ​un nod.
  
 Problema se poate testa la: \\ Problema se poate testa la: \\
 [[https://​cses.fi/​problemset/​task/​1751 | CSES - Planets Cycles]] [[https://​cses.fi/​problemset/​task/​1751 | CSES - Planets Cycles]]
  
-======= ​4) Coin Collector =======+======= ​5) Coin Collector =======
  
-**Enunț:​** ​Se dă un graf orientat cu ''​N''​ noduri și ''​M''​ muchii. Fiecare nod conține un anumit număr de monede. ​Traseul poate începe din orice nod, iar deplasarea se face exclusiv pe muchiile orientate. De fiecare dată când este vizitat ​un nod, se colectează ​toate monedele ​de acolo (o singură dată per traseu). ​Se cere determinarea ​numărului maxim de monede ​ce pot fi colectate.+**Enunț:​** ​Fie un graf orientat cu ''​n''​ noduri și ''​m''​ muchii. Fiecare nod conține un anumit număr de monede. ​Poți începe ​traseul ​din orice nod și te poți deplasa doar folosind ​muchiile orientate. De fiecare dată când vizitezi ​un nod, colectezi ​toate monedele ​din acel nod (lucru care se poate face o singură dată per nod pe parcursul unui traseu). ​Cerința este să determini ​numărul maxim de monede ​pe care le poți colecta.
  
-**Date de intrare:** Prima linie conține ​numerele ​''​N''​ și ''​M''​. A doua linie conține valorile ''​c_1,​ c_2, ..., c_N'' ​(monedele din fiecare nod). Următoarele ''​M''​ linii conțin ​muchiile orientate sub forma ''​a b'' ​(de la ''​a''​ la ''​b''​).+**Date de intrare:** Prima linie conține ​două numere întregi ​''​n''​ și ''​m''​. A doua linie conține valorile ''​c_1,​ c_2, ..., c_n''​, reprezentând ​monedele din fiecare nod. Următoarele ''​m''​ linii descriu ​muchiile orientate sub forma ''​a b''​, adică o muchie ​de la ''​a''​ la ''​b''​.
  
-**Date de ieșire:** Un număr întreg ​reprezentând ​maximul de monede ​colectabile.+**Date de ieșire:** Un singur ​număr întregmaximul de monede ​ce pot fi colectate.
  
 Problema se poate testa la: \\ Problema se poate testa la: \\
 [[https://​cses.fi/​problemset/​task/​1686 | CSES - Coin Collector]] [[https://​cses.fi/​problemset/​task/​1686 | CSES - Coin Collector]]
  
-======= ​5) Giant Pizza =======+======= ​6) Giant Pizza =======
  
-**Enunț:** O familie cu ''​N''​ membri dorește să comande o pizza. Există ''​M''​ ingrediente ​(topping-uri) ​posibile. Fiecare membru al familiei are exact două preferințe legate de pizza, fiecare preferință specificând dacă un anumit ingredient ar trebui inclus (+) sau exclus (-). Se cere determinarea unei rețete de pizza (ce ingrediente sunt incluse și care sunt excluse) ​astfel încât cel puțin o preferință a fiecărui membru al familiei să fie respectată.+**Enunț:** O familie cu ''​n''​ membri dorește să comande o pizza. Există ''​m''​ ingrediente posibile. Fiecare membru al familiei are exact două preferințe legate de pizza, fiecare preferință specificând dacă un anumit ingredient ar trebui inclus (+) sau exclus (-). Sarcina ta este să determini dacă există o rețetă de pizza astfel încât cel puțin o preferință a fiecărui membru al familiei să fie respectată. ​
  
-**Date de intrare:** Prima linie conține două numere întregi ''​N'' ​(numărul de membri ai familiei) ​și ''​M'' ​(numărul de ingrediente). Următoarele ''​N''​ linii descriu ​preferințele ​fiecărui membru, având formatul: un caracter ​(''​+''​ sau ''​-''​),​ un număr întreg (ingredientul)un alt caracter (''​+''​ sau ''​-''​și un alt număr întreg.+**Date de intrare:** Prima linie conține două numere întregi ''​n''​ și ''​m''​. Următoarele ''​n''​ linii conțin câte două perechi de valori reprezentând ​preferințele ​membrilor ​(ex. "2" înseamnă că dorește ​ingredientul ​1dar nu dorește ingredientul 2). O preferință este îndeplinită dacă pizza finală respectă măcar una dintre cele două condiții alese de membru.
  
-**Date de ieșire:** Afișarea unei linii cu soluție validă ​formată din caractere ​''+'' și ''-''​ reprezentând starea fiecărui ingredient de la 1 la ''​M'​', despărțite prin spațiu, ​sau textul "​IMPOSSIBLE" ​dacă nu există nicio rețetă care să satisfacă cerințele.+**Date de ieșire:** Afișați linie cu textul "​IMPOSSIBLE"​ dacă nicio combinație nu poate satisface cerințele. Dacă o rețetă ​validă ​există, afișați textul "​SATISFIABLE"​ pe prima linie, iar pe a doua linie afișați o serie de caractere '​+'​ și '​-',​ despărțite prin spațiu, ​indicând pentru fiecare ingredient (de la 1 la ''​m''​) ​dacă va fi inclus sau nu în pizza.
  
 Problema se poate testa la: \\ Problema se poate testa la: \\
pa/laboratoare/laborator-07.1776721414.txt.gz · Last modified: 2026/04/21 00:43 by radu.nichita
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0