Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define E 4
- #define V 4
- void DFS (int x, int *n, int *p, int **visit, int **parent, int **a)
- {
- *n += 1;
- *(*visit + x) = *n;
- *(*parent + x) = *p;
- *p = x;
- for (int j = 0; j < V; j++)
- {
- if (*(*a + x + E * j) == 1 && *(*visit + j) == 0)
- DFS (j, n, p, visit, parent, a);
- }
- }
- void printResult (int *visit, int *parent)
- {
- int i, j;
- printf ("visit = \n");
- for (int i = 0; i < E; i++) printf ("%d\t", *(visit + i) - 1);
- printf ("\nparent = \n");
- for (int i = 0; i < E - 1; i++) printf ("%d\t", *(parent + i));
- printf ("NP(*)\n*:No Parent means that node 3 is the root.");
- }
- int main ()
- {
- int *visit = (int *) calloc (E, sizeof (int));
- int *parent = (int *) calloc (E, sizeof (int));
- int *a = calloc( E * E, sizeof (int *));
- *(a + 0 * E + 2) = 1;
- *(a + 1 * E + 3) = 1;
- *(a + 1 * E + 2) = 1;
- *(a + 2 * E + 0) = 1;
- *(a + 2 * E + 1) = 1;
- *(a + 2 * E + 3) = 1;
- *(a + 3 * E + 1) = 1;
- *(a + 3 * E + 2) = 1;
- int n = 0, p = -1, s = 3;
- DFS (s, &n, &p, &visit, &parent, &a);
- printResult (visit, parent);
- return 0;
- }
Add Comment
Please, Sign In to add comment