0431 - Graf Complet

De la Universitas MediaWiki
Versiunea din 16 decembrie 2023 14:59, autor: Corjuc Eunice (discuție | contribuții) (Pagină nouă: = Cerinţa = Se dau mai multe grafuri neorientate, prin matricea de adiacență. Să se verifice despre fiecare graf dacă este complet. = Date de intrare = Fişierul de intrare <code>graf_completIN.txt</code> conţine pe prima linie numărul de grafuri <code>G</code>. Pentru fiecare dintre cele <code>G</code> grafuri se dă <code>n</code> și apoi matricea de adiacență, formată din <code>n</code> linii și <code>n</code> coloane. = Date de ieşire = Fişierul de ieşire...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerinţa

Se dau mai multe grafuri neorientate, prin matricea de adiacență. Să se verifice despre fiecare graf dacă este complet.

Date de intrare

Fişierul de intrare graf_completIN.txt conţine pe prima linie numărul de grafuri G. Pentru fiecare dintre cele G grafuri se dă n și apoi matricea de adiacență, formată din n linii și n coloane.

Date de ieşire

Fişierul de ieşire graf_completOUT.txt va conţine G linii. Pe fiecare dintre ele se va afla mesajul DA sau NU, după cum graful corespunzător este sau nu complet.

Restricţii şi precizări

  • 1 ≤ G ≤ 5
  • 1 ≤ n ≤ 50

Exemplul 1

graf_completIN.txt:

2

3

0 1 1

1 0 1

1 1 0

4

0 1 1 1

1 0 0 1

1 0 0 1

1 1 1 0

graf_completOUT.txt:

DA

NU

Exemplul 2

graf_completIN.txt:

99

3

0 1 1

1 0 1

1 1 0

4

0 1 1 1

1 0 0 1

1 0 0 1

1 1 1 0

Output:

Restrictii neindeplinite

Rezolvare

def este_graf_complet(matrice_adiacenta):
    n = len(matrice_adiacenta)
    for i in range(n):
        for j in range(n):
            if i != j and matrice_adiacenta[i][j] == 0:
                return False
    return True

def verifica_restrictii(G, n):
    return 1 <= G <= 5 and 1 <= n <= 50

def main():
    with open("graf_completIN.txt", "r") as f_in, open("graf_completOUT.txt", "w") as f_out:
        G = int(f_in.readline().strip())

        for _ in range(G):
            n = int(f_in.readline().strip())
            if not verifica_restrictii(G,n):
                print("Restrictii neindeplinite")
                return
            matrice_adiacenta = []
            for _ in range(n):
                linie = list(map(int, f_in.readline().split()))
                matrice_adiacenta.append(linie)

            rezultat = "DA" if este_graf_complet(matrice_adiacenta) else "NU"
            f_out.write(rezultat + "\n")

if __name__ == "__main__":
    main()