Регулярний граф#5076

Регулярний граф (Розбір)

Обчислимо степінь кожної вершини графа. Якщо степені всіх вершин однакові, то граф є регулярним; в іншому випадку — ні.

Приклад

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

Степені всіх вершин першого графа дорівнюють , тому він є регулярним. У другому прикладі вершини мають різні степені, отже, цей граф не є регулярним.

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

Степені вершин будемо підраховувати в масиві .

#define MAX 110
int deg[MAX];

Зчитуємо вхідні дані.

scanf("%d %d",&n,&m);
memset(deg,0,sizeof(deg));
for(i = 0; i < m; i++)
{

Для кожного неорієнтованого ребра збільшуємо на степені вершин і .

  scanf("%d %d",&a,&b);
  deg[a]++; deg[b]++;
}

Перевіряємо, чи рівні всі значення масиву . Якщо всі значення збігаються (тобто степені всіх вершин однакові), то flag = 0, і граф є регулярним.

flag = 0;
for(i = 1; i < n; i++)
  if (deg[i] != deg[i+1]) flag = 1;

Залежно від значення змінної виводимо відповідь.

if (flag == 0) printf("YES\n");
else printf("NO\n");