0413 - Adiacenta 1: Difference between revisions
Pagină nouă: == Cerinţa == Se dă lista muchiilor unui graf neorientat. Să se afișeze matricea de adiacență a grafului. == Date de intrare == Fiecare dintre liniile fișierului '''adiacenta1.in''' conține câte o pereche de numere '''i j''', cu semnificația că există muchie între '''i''' și '''j'''. == Date de ieșire == Fişierul de ieşire '''adiacenta1.out''' va conţine '''n''' linii; pe fiecare dintre ele vor fi câte '''n''' valori separate prin exact un spațiu, reprezen... |
No edit summary |
||
Line 2: | Line 2: | ||
Se dă lista muchiilor unui graf neorientat. Să se afișeze matricea de adiacență a grafului. | Se dă lista muchiilor unui graf neorientat. Să se afișeze matricea de adiacență a grafului. | ||
== Date de intrare == | == Date de intrare == | ||
Fiecare dintre liniile fișierului ''' | Fiecare dintre liniile fișierului '''adiacenta1in.txt''' conține câte o pereche de numere '''i j''', cu semnificația că există muchie între '''i''' și '''j'''. | ||
== Date de ieșire == | == Date de ieșire == | ||
Fişierul de ieşire ''' | Fişierul de ieşire '''adiacenta1out.txt''' va conţine '''n''' linii; pe fiecare dintre ele vor fi câte '''n''' valori separate prin exact un spațiu, reprezentând matricea de adiacență a grafului dat. | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
* graful dat va avea cel mult '''100''' de vârfuri | * graful dat va avea cel mult '''100''' de vârfuri | ||
Line 10: | Line 10: | ||
* numărul de vârfuri ale grafului va fi egal cu cea mai mare valoare din lista muchiilor | * numărul de vârfuri ale grafului va fi egal cu cea mai mare valoare din lista muchiilor | ||
== Exemplu == | == Exemplu == | ||
; | ; adiacenta1in.txt | ||
1 4 | |||
1 3 | |||
3 5 | |||
4 5 | |||
2 4 | |||
1 2 | |||
4 2 | |||
3 4 | |||
; | ; adiacenta1out.txt | ||
Datele de intrare corespund restrictiilor impuse | |||
0 1 1 1 0 | |||
1 0 0 1 0 | |||
1 0 0 1 1 | |||
1 1 1 0 1 | |||
0 0 1 1 0 | |||
; adiacenta1in.txt | |||
1 400 | |||
1 3 | |||
3 5 | |||
4 5 | |||
2 4 | |||
1 2 | |||
4 2 | |||
3 4 | |||
; adiacenta1out.txt | |||
Datele de intrare nu corespund restrictiilor impuse | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> |
Revision as of 17:07, 12 December 2023
Cerinţa
Se dă lista muchiilor unui graf neorientat. Să se afișeze matricea de adiacență a grafului.
Date de intrare
Fiecare dintre liniile fișierului adiacenta1in.txt conține câte o pereche de numere i j, cu semnificația că există muchie între i și j.
Date de ieșire
Fişierul de ieşire adiacenta1out.txt va conţine n linii; pe fiecare dintre ele vor fi câte n valori separate prin exact un spațiu, reprezentând matricea de adiacență a grafului dat.
Restricţii şi precizări
- graful dat va avea cel mult 100 de vârfuri
- muchiile se pot repeta în fișierul de intrare
- numărul de vârfuri ale grafului va fi egal cu cea mai mare valoare din lista muchiilor
Exemplu
- adiacenta1in.txt
1 4 1 3 3 5 4 5 2 4 1 2 4 2 3 4
- adiacenta1out.txt
Datele de intrare corespund restrictiilor impuse 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0
- adiacenta1in.txt
1 400 1 3 3 5 4 5 2 4 1 2 4 2 3 4
- adiacenta1out.txt
Datele de intrare nu corespund restrictiilor impuse
Rezolvare
<syntaxhighlight lang="python" line>
- Citirea datelor de intrare
with open('adiacenta1.in', 'r') as f:
muchii = [list(map(int, linie.split())) for linie in f]
- Determinăm numărul de vârfuri ale grafului
n = max(max(muchie) for muchie in muchii)
- Inițializăm matricea de adiacență cu 0
adiacenta = [[0 for _ in range(n)] for _ in range(n)]
- Parcurgem fiecare muchie
for muchie in muchii:
i, j = muchie # Adăugăm muchia în matricea de adiacență adiacenta[i-1][j-1] = 1 adiacenta[j-1][i-1] = 1
- Afișăm matricea de adiacență
with open('adiacenta1.out', 'w') as f:
for linie in adiacenta: f.write(' '.join(map(str, linie)) + '\n')
</syntaxhighlight>