Объявімо лінійний масив . У комірці будемо зберігати ступінь вершини , яка дорівнює кількості одиниць у -му рядку матриці суміжності.
У неорієнтованому графі кожне ребро враховується двічі: якщо — матриця суміжності та між вершинами та є ребро, то m[i][j] = m[j][i] = 1). Для кожного ребра збільшуємо на (коли зустрінеться ребро , то deg[j] збільшиться на ).
Приклад
Граф, наведений у прикладі, має наступний вигляд:
Реалізація алгоритму
Объявімо масив для зберігання ступенів вершин.
#define MAX 101
int deg[MAX];Читаємо кількість вершин графа . Ініціалізуємо масив .
scanf("%d",&n);
memset(deg,0,sizeof(deg));Читаємо матрицю суміжності.
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{Якщо в графі є ребро між вершинами і (значення дорівнює ), збільшуємо на одиницю.
scanf("%d",&value);
if (value == 1) deg[i]++;
}Виводимо ступені всіх вершин графа.
for(i = 0; i < n; i++)
printf("%d\n",deg[i]);Java реалізація
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int n = con.nextInt();
int deg[] = new int[n];
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
{
int value = con.nextInt();
if (value == 1) deg[i]++;
}
for(int i = 0; i < n; i++)
System.out.println(deg[i]);
con.close();
}
} Python реалізація
Читаємо кількість вершин графа .
n = int(input())Ініціалізуємо матрицю суміжності та список ступенів вершин .
g = [[] for _ in range(n)]
deg = [0] * nЧитаємо матрицю суміжності.
for i in range(n):
g[i] = list(map(int, input().split()))Виконуємо обчислення ступенів вершин графа. Ступінь вершини дорівнює сумі елементів -го рядка матриці суміжності .
for i in range(n):
deg[i] = sum(g[i])Виводимо ступені всіх вершин графа.
for i in range(n):
print(deg[i])