Xətti massiv təyin edək. gövdəsində, adjaçentlik matrisinin -ci sətirindəki birliklərin sayı olan vertex -nin dərəcəsi saxlanılır.
Yönsüz qrafda hər bir kənar iki dəfə nəzərə alınır: əgər adjaçentlik matrisidir və vertex və arasında kənar varsa, onda m[i][j] = m[j][i] = 1). Hər bir kənar üçün , dəfə artırılır (kənar qarşılandıqda, deg[j] dəfə artacaq).
MisalQrafda verilmiş misal aşağıdakı kimidir:
Alqoritmin həyata keçirilməsi
Vertex dərəcələrinin saxlanması üçün massivi təyin edək.
#define MAX 101
int deg[MAX];Qrafın vertexlərinin sayını oxuyuruq . Massivi başlamış şəkildə təyin edirik.
scanf("%d",&n);
memset(deg,0,sizeof(deg));Adjaçentlik matrisini oxuyuruq.
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{Qrafda və vertexləri arasında kənar varsa (dəyişənin dəyəri -ə bərabərdirsə), bir artırılır.
scanf("%d",&value);
if (value == 1) deg[i]++;
}Qrafın bütün vertexlərinin dərəcələrini çap edirik.
for(i = 0; i < n; i++)
printf("%d\n",deg[i]);Java həyata keçirilməsi
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 həyata keçirilməsi
Qrafın vertexlərinin sayını oxuyuruq .
n = int(input())Adjaçentlik matrisini və vertex dərəcələri siyahısını başlamış şəkildə təyin edirik.
g = [[] for _ in range(n)]
deg = [0] * nAdjaçentlik matrisini oxuyuruq.
for i in range(n):
g[i] = list(map(int, input().split()))Qrafın vertex dərəcələrini hesablayırıq. Vertex -nin dərəcəsi matrisinin -ci sətirinin elementlərinin cəminə bərabərdir.
for i in range(n):
deg[i] = sum(g[i])Qrafın bütün vertexlərinin dərəcələrini çap edirik.
for i in range(n):
print(deg[i])