Non va bene scrivere
int grafo[nodi][nodi]
anche in considerazione del fatto che non tutti i compilatori lo accetterebbero (solamente quelli C99)
Devi allocare dinamicamente l'array a partire da un doppio puntatore, che è poi quello che passeresti alla funzione. Quindi
int **grafo = ...
con tutto quello che segue per l'allocazione dinamica della matrice.