Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct _grafo
- {
- int *adj;
- int num_archi;
- }grafo;
- int dfs(grafo*, int n, int* color, int* parent);
- int main()
- {
- int n = 0;
- int i;
- scanf("%d", &n);
- /*----------------LETTURA GRAFO-----------------*/
- grafo *E = (grafo*)malloc(n * sizeof(grafo));
- int archi, j;
- for(i = 0; i < n; i++)
- {
- scanf("%d", &archi);
- E[i].adj = (int*)malloc(archi * sizeof(int));
- E[i].num_archi = archi;
- for(j = 0; j < archi; j++)
- {
- scanf("%d", E[i].adj + j);
- }
- }
- //printf("Fine lettura\n");
- /*------------PRINT RISULTATO--------------*/
- int *color = (int*)malloc(n * sizeof(int));
- int *parent = (int*)malloc(n * sizeof(int));
- for(i = 0 ; i < n; i++)
- {
- color[i] = 0;
- parent[i] = -1;
- }
- printf("%d\n", dfs(E, 0, color, parent));
- return 0;
- }
- int dfs(grafo *E, int src, int *color, int *parent)
- {
- int dest, i;
- for(i = 0; i < E[src].num_archi; i++)
- {
- dest = E[src].adj[i];
- //printf("dest = %d\n src = %d\n", dest, src);
- if(!color[dest])
- {
- color[dest] = 1;
- parent[dest] = src;
- dfs(E, dest, color, parent);
- }
- else
- {
- if((parent[dest] != src) && (parent[dest] != -1))
- return 0;
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement