Будемо виводити список ребер "на льоту", послідовно обробляючи матрицю суміжності: построчно зверху вниз, а всередині кожного рядка — зліва направо. Для кожної одиниці в матриці суміжності виводимо пару вершин, що задає відповідне ребро. При такому обході пари вершин автоматично опиняються впорядкованими по першій вершині.
Приклад
Граф, наведений у прикладі, має наступний вигляд:
Реалізація алгоритму
Читаємо матрицю суміжності графа. Оскільки граф є неорієнтованим, виводимо лише ті ребра , для яких 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();
}
}