Calcoliamo il grado di ogni vertice del grafo. Se i gradi di tutti i vertici sono uguali, allora il grafo è regolare; in caso contrario — non lo è.
Esempio
I grafi riportati negli esempi hanno il seguente aspetto:
I gradi di tutti i vertici del primo grafo sono uguali a , pertanto esso è regolare. Nel secondo esempio i vertici hanno gradi diversi, di conseguenza questo grafo non è regolare.
Implementazione dell'algoritmo
Calcoleremo i gradi dei vertici nell'array .
#define MAX 110
int deg[MAX];Leggiamo i dati di input.
scanf("%d %d",&n,&m);
memset(deg,0,sizeof(deg));
for(i = 0; i < m; i++)
{Per ogni arco non orientato incrementiamo di i gradi dei vertici e .
scanf("%d %d",&a,&b);
deg[a]++; deg[b]++;
}Verifichiamo se tutti i valori dell'array sono uguali. Se tutti i valori coincidono (cioè i gradi di tutti i vertici sono uguali), allora flag = 0, e il grafo è regolare.
flag = 0;
for(i = 1; i < n; i++)
if (deg[i] != deg[i+1]) flag = 1;A seconda del valore della variabile stampiamo la risposta.
if (flag == 0) printf("YES\n");
else printf("NO\n");