Potresti riportare anche le funzioni di inserimento di archi e nodi?

In outdegree:
  • d non dovrebbe essere un argomento della funzione, ma ciò non influisce sul calcolo.
  • la flag da controllare è used (che segnala se il nodo è utilizzato o non) e non visited (che se segnala se il nodo è stato visitato durante un algoritmo di visita.
  • un valore più corretto per il caso in cui non sia utilizzato è -1. 0 è un valore valido nel range della funzione (un nodo può essere isolato o terminale), -1 non lo è e segnala un errore


In indegree è sbagliata la logica. Tu devi scorrere le liste di adiacenza di ogni nodo usato (come stai già facendo) ma il confronto lo devi fare con la label di x che ti è stato passato come parametro, che, per come è implementato, è x stesso. Infatti il nome di un nodo corrisponde all'indice che ha nell'array. Motivo per cui 2 nodi non possono avere lo stesso nome.

Attento comunque che potresti avere archi duplicati nelle liste di adiacenza. Come nota a margine non ti serve necessariamente scorrere tutta la lista per ogni nodo, infatti quando trovi un arco uscente verso il nodo di interesse, se il grafo è ben costruito, non ne puoi trovare un altro uguale.