2636 - Noduri Izolate: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: = Cerința = Se dau două numere <code>n</code> și <code>m</code>. Aflați care este numărul minim și numărul maxim de noduri izolate într-un graf neorientat cu <code>n</code> noduri și <code>m</code> muchii în care nu există o muchie de la un nod la el însuși și între oricare două noduri diferite există cel mult o muchie. = Date de intrare = Programul citește de la tastatură numerele <code>n m</code>. = Date de ieșire = Programul va afișa pe ecran numerel...
 
 
Line 21: Line 21:


0 1
0 1
Explicație:
Se poate construi un graf fără noduri izolate, cu muchiile <code>(1,2)</code> și <code>(3,4)</code>. Pentru a obține un nod izolat, putem construi un graf cu muchiile <code>(1,2)</code> și <code>(1,3)</code>.


== Exemplul 2 ==
== Exemplul 2 ==

Latest revision as of 19:32, 2 January 2024

Cerința[edit | edit source]

Se dau două numere n și m. Aflați care este numărul minim și numărul maxim de noduri izolate într-un graf neorientat cu n noduri și m muchii în care nu există o muchie de la un nod la el însuși și între oricare două noduri diferite există cel mult o muchie.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n m.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numerele a și b, reprezentând numărul minim, respectiv numărul maxim de noduri izolate într-un graf neorientat cu n noduri și m muchii în care nu există o muchie de la un nod la el însuși și între oricare două noduri diferite există cel mult o muchie.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 100.000
  • 0<=m<=n*(n-1)/2

Exemplul 1[edit | edit source]

Input:

4 2

Output:

0 1

Explicație:

Se poate construi un graf fără noduri izolate, cu muchiile (1,2) și (3,4). Pentru a obține un nod izolat, putem construi un graf cu muchiile (1,2) și (1,3).

Exemplul 2[edit | edit source]

Input:

99999999 2

Output:

Restrictiile nu sunt indeplinite.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def check_restrictions(n, m):

   return 1 <= n <= 100000 and 0 <= m <= n * (n - 1) // 2

def calculate_isolated_nodes(n, m):

   # Verifică restricțiile
   if not check_restrictions(n, m):
       print("Restrictiile nu sunt indeplinite.")
       return None
   # Numărul minim de noduri izolate
   min_isolated_nodes = 0
   # Numărul maxim de noduri izolate
   max_isolated_nodes = max(0, min(n - m, 1))
   return min_isolated_nodes, max_isolated_nodes

if __name__ == "__main__":

   n = int(input("Introduceti numarul de noduri (n): "))
   m = int(input("Introduceti numarul de muchii (m): "))
   result = calculate_isolated_nodes(n, m)
   if result is not None:
       min_isolated, max_isolated = result
       print(f"Numarul minim de noduri izolate: {min_isolated}")
       print(f"Numarul maxim de noduri izolate: {max_isolated}")

</syntaxhighlight>