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.