Від матриці суміжності до списку ребер#2471

Від матриці суміжності до списку ребер (Розбір)

Будемо виводити список ребер "на льоту", послідовно обробляючи матрицю суміжності: построчно зверху вниз, а всередині кожного рядка — зліва направо. Для кожної одиниці в матриці суміжності виводимо пару вершин, що задає відповідне ребро. При такому обході пари вершин автоматично опиняються впорядкованими по першій вершині.

Приклад

Граф, наведений у прикладі, має наступний вигляд:

Реалізація алгоритму

Читаємо матрицю суміжності графа. Оскільки граф є неорієнтованим, виводимо лише ті ребра , для яких i < j.

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

Java реалізація

import java.util.*;

public class Main
{
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    
    int n = con.nextInt();
    for(int i = 1; i <= n; i++)
    for(int j = 1; j <= n; j++)
    {
      int val = con.nextInt();
      if (i < j && val == 1)
        System.out.println(i + " " + j);
    }
    con.close();
  }
}