Для кожної вершини підрахуємо кількість вершин, суміжних з нею. Якщо це число дорівнює , то вершина є висячою.
Приклад
Графи, наведені у прикладах, мають наступний вигляд:
У першому прикладі граф містить дві вершини степеня . Отже, у ньому дві висячі вершини.
У другому прикладі вершин степеня (висячих) немає.
Реалізація алгоритму
Оголосимо масив , де — кількість вершин, суміжних з вершиною .
#define MAX 1010
int m[MAX];Читаємо матрицю суміжності неорієнтованого графа. Для кожного ребра збільшуємо значення на (значення збільшиться на , коли розглядатиметься ребро ).
scanf("%d",&n);
memset(m,0,sizeof(m));
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
scanf("%d",&val);
if (val) m[i]++;
}Якщо m[i] = 1, то вершина з'єднана рівно з однією вершиною, тобто є висячою. Підраховуємо кількість таких вершин і зберігаємо результат у змінній .
res = 0;
for (i = 0; i < n; i++)
if (m[i] == 1) res++;Виводимо відповідь.
printf("%d\n",res);