6 Maggio 2010 [Visite di Grafi] NOTA: Per dichiarare ed inizializzare un array bidimensionale in C: int a[3][3]={ {0,0,0} , {1,1,1} , {2,2,2} }; Es. 1. Implementare il tipo di dato Queue visto a lezione. Es. 2. Implementare la funzione int* bfs(int num_of_nodes,int** graph,int source); che realizza la visita BFS di un grafo e restituisce un array booleano che memorizza i nodi raggiunti dalla visita. Es. 3. Scrivere il programma "bfs" a cui passare da riga di comando il numero di nodi del grafo come primo argomento, il nodo sorgente come secondo argomento, ed il percorso del file contenente gli archi come terzo (e.g. "bfs 10 0 edges.txt"). L'eseguibile crea dinamicamente la matrice di adiacenza del grafo e lo visita. Gli archi sono memorizzati uno per riga nel file in input, come coppie di interi (0 <= i <= n-1): 0 1 1 5 10 11 2 3 Suggerimento: per la lettura dell'input usare le funzioni fopen(),fclose(),feof(),fscanf(). Es. 4. Implementare il tipo di dato Stack. Es. 5. Implementare la funzione int* dfs(int num_of_nodes,int** graph,int source); che realizza la visita DFS di un grafo e restituisce un array booleano che memorizza i nodi raggiunti dalla visita (basta modificare la funzione bfs() sostituendo la coda con uno stack).