Città e strade#992

Città e strade (Editoriale)

Sia la matrice di adiacenza del grafo. Poiché il grafo è non orientato, nel caso in cui esista uno spigolo tra i vertici e valgono le uguaglianze:

g[i][j] = g[j][i] = 1

Il numero di spigoli nel grafo è uguale al numero di uno nella matrice di adiacenza, diviso per .

Esempio

Il grafo riportato nell'esempio ha la forma:

Il numero di strade sul pianeta è pari a .

Implementazione dell'algoritmo

Leggiamo il valore di input .

scanf("%d",\&n);

Leggiamo la matrice di adiacenza. Calcoliamo la somma dei numeri in essa. Poiché il grafo è non orientato, è uguale al doppio del numero di spigoli.

res = 0;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{
  scanf("%d",\&val);
  res += val;
}

Calcoliamo e stampiamo il numero di spigoli.

res /= 2;
printf("%d\n",res);

Implementazione in Java

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();

    int res = 0;
    for(int i = 0; i < n; i++)
    for(int j = 0; j < n; j++)
      res += con.nextInt();

    res /= 2;
    System.out.println(res);
    con.close();
  }
}

Implementazione in Python — al volo

Leggiamo il valore di input .

n = int(input())

Calcoliamo la somma dei numeri nella matrice di adiacenza nella variabile .

res = 0

Leggiamo la matrice di adiacenza riga per riga. Per ogni riga calcoliamo la somma dei numeri in essa contenuti. Poi aggiungiamo questa somma al valore .

for _ in range(n):
  res += sum(map(int, input().split()))

Poiché il grafo è non orientato, la somma è uguale al doppio del numero di spigoli. Dividiamo per e stampiamo la risposta.

res //= 2
print(res)

Implementazione in Python — matrice di adiacenza

Leggiamo i dati di input.

n = int(input()) 
g = [[int(j) for j in input().split()] for i in range(n)]

Calcoliamo la somma dei numeri nella matrice di adiacenza. Poiché il grafo è non orientato, è uguale al doppio del numero di spigoli.

s = 0
for row in g:
  s += sum(row)

Stampiamo il numero di spigoli.

print(s // 2)