Requlyar qraf#5076

Requlyar qraf (Həll təhlili)

Qrafın hər bir təpəsinin dərəcəsini hesablayaq. Əgər bütün təpələrin dərəcələri eynidirsə, onda qraf requlyardır; əks halda — deyil.

Nümunə

Nümunələrdə verilmiş qraflar aşağıdakı görünüşə malikdir:

Birinci qrafın bütün təpələrinin dərəcələri -yə bərabərdir, buna görə də o requlyardır. İkinci nümunədə təpələrin dərəcələri müxtəlifdir, deməli, bu qraf requlyar deyil.

Alqoritmin realizasiyası

Təpələrin dərəcələrini massivində hesablayacağıq.

#define MAX 110
int deg[MAX];

Giriş məlumatlarını oxuyuruq.

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

Hər bir yönəldilməmiş tili üçün və təpələrinin dərəcələrini artırırıq.

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

massivinin bütün qiymətlərinin bərabər olub-olmadığını yoxlayırıq. Əgər bütün qiymətlər üst-üstə düşürsə (yəni bütün təpələrin dərəcələri eynidirsə), onda flag = 0 olur və qraf requlyardır.

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

dəyişəninin qiymətindən asılı olaraq cavabı çap edirik.

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