perchè io ho creato una lista di adiacenza di un grafo
completo non orientato . so che sono tutti uno tranne la diagonale
Ok ora torna il discorso, in pratica tu hai realizzato una matrice di adiacenza per un grafo completo, cioè tale che ogni vertice sia connesso con tutti gli altri... e ora si spiega il codice che hai postato all'inizio :)
Sicuramente però dovresti generalizzare la creazione della matrice, perché l'esercizio chiede in input "un grafo non orientato", non necessariamente completo.
Puoi fare in due modi: o progetti il programma in maniera tale che legga la matrice da un file, oppure crei un programma interattivo che chieda all'utente, nell'ordine:
1) il numero N dei vertici del grafo, con N >= 1 (con allocazione quindi di una matrice NxN);
2) per ciascun vertice, il numero M dei vertici ad esso connessi, con 0 <= M < N;
3) il numero (o la lettera identificativa) di questi M vertici.
Ogni riga corrisponde ad un vertice, quindi se dico che il vertice 0 è connesso ai vertici 3 e 4 (supponendo che in totale siano 5) la prima riga sarà
codice:
0 0 0 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
e così via per tutti i vertici. Poni attenzione ad un fatto: il grafo non è orientato. Questo significa che gli archi ab e ba, con b!=a, sono equivalenti. In poche parole, se per il vertice 0 dici che è connesso al vertice 3, allora di sicuro anche 3 sarà connesso a 0... stessa cosa per il 4, quindi dopo l'immissione della prima riga la matrice dovrebbe essere in realtà così
codice:
0 0 0 1 1
0 0 0 0 0
0 0 0 0 0
1 0 0 0 0
1 0 0 0 0
cioè appunto i vertici 3 e 4 devono risultare connessi a 0. Alla fine ti ritroverai con una matrice simmetrica rispetto alla diagonale principale, come del resto già quest'ultima risulta essere. La diagonale poi ha tutti 0 perché ovviamente nessun vertice ha un arco che lo collega a sé stesso.
EDIT: volendo puoi anche farlo in maniera random, ma devi stare attento alla questione della simmetria... per intenderci, una matrice come questa
codice:
0 1 1 0 0
0 0 0 1 1
1 0 0 1 0
0 0 1 0 0
1 1 1 1 0
tutto può rappresentare tranne che un grafo non orientato :)