Salve a tutti
sono nuovo...vi scrive perchè mi servirebbe una mano!!!
dovrei presentare un progetto per un esame
questo è il testo:
Dato un grafo G=(V,L) non orientato, chiamiamo triangolo un insieme di tre nodi distinti
di G che formano una clique({a,b,c} tale che a!=b b!=c a!=c e i lati ab bc e ac appartengono ad L
a) sia G = (V,L) un grafo non orientato e completo ovvero ab E L , per ogni coppia di nodi distinti. se n è il numero di nodi di G
qual'è il numero dei suoi triangoli?
b) progettare un algoritmo che ricevendo in input un grafo non orientato G calcoli il numero
dei suoi triangoli. Si assuma G rappresentato mediante matrice di adiacenza
per chi non è al corrente una matrice di adiacenza è una matrice simmetrica dove la diagonale è posta a 0.
mi manca la parte b e non so come cavarne piede. c'è qualcuno per caso che mi può dare una mano?
quel che ho fatto io è questo ma non creo una matrice tramite l'inserimento di un grafo. bensi calcolo il numero dei triangoli sapendo il numero dei vertici del grafo
programma con c++
codice:
main()
{
int n_triang=0,i=1,c=0, j, V,Grafo[MAX][MAX],sum=0;
int n;
printf("\nInserire il numero dei vertici del grafo :\n");
scanf("%d",&V);
if (V==0 || V==1 || V==2)
printf("il grafo non ha triangoli");
else
{
creagrafo(Grafo,V);
stampagrafo (Grafo,V);
for (j=3; j<=V; j++)
{
n_triang= n_triang+i;
n+=n_triang;
i++;
}
printf("\n il numero dei triangoli in un grafo di %d vertici e' %d ", V, n);
}
infotriang (Grafo,V);
fflush(stdin);
getchar();
}
void creagrafo(int mat[MAX][MAX], int nodo)
{
int i,j;
for (i=0;i<nodo;i++)
for (j=0;j<nodo;j++)
mat[i][j] = 1;
for(i=0;i<nodo;i++)
mat[i][i] = 0;
}
void stampagrafo (int mat[MAX][MAX],int nodo)
{
int i,j,k;
char a='A';
char b='A';
printf(" ");
for (k=0;k<nodo;k++)
printf(" %c", b++);
for(i=0;i<nodo;i++){
printf("\n %c ",a++);
for(j=0;j<nodo;j++)
printf("%d ",mat[i][j]);
}
}