Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <queue>
- using namespace std;
- void DFS_Visit(int u);
- int g[7][7],color[7],prev[7],d[7], f[7],t,flage = 0,cu[7],cv[7];
- void DFS(int g[7][7])
- {
- int i,j,s=0,u,v;
- for(i=0;i<7;i++)
- {
- color[i] = 0;
- prev[i] = 0;
- d[i] = 999999;
- f[i] = 999999;
- }
- t = 0;
- color[s] = 0;
- prev[s] = 0;
- d[s] = 0;
- for(j=0;j<7;j++)
- {
- if(color[j]==0)
- {
- DFS_Visit(j);
- }
- }
- printf("\n Discover Time:\t");
- for(i=0;i<7;i++)
- printf("%d\t",d[i]);
- printf("\n Final Time:\t");
- for(i=0;i<7;i++)
- printf("%d\t",f[i]);
- printf("\n Color:\t");
- for(i=0;i<7;i++)
- printf("%d\t",color[i]);
- if(flage==1)
- {
- printf("\n Cycle Edge\n");
- for(i=0;i<7;i++)
- {
- printf("%d - %d\t",cu[i],cv[i]);
- }
- }
- else printf("This Graph is not cycle");
- }
- void DFS_Visit(int u)
- {
- int i,k = 0, l= 0;
- color[u] = 1;
- t = t+1;
- d[u] = t;
- for(i=0;i<7;i++)
- {
- if(color[i]==0 && g[u][i] !=0)
- {
- prev[i] = u;
- DFS_Visit(i);
- }
- else if(color[i]==1 && g[u][i] !=0)
- {
- flage = 1;
- cu[k] = u;
- cv[l++] = i;
- printf("cycle edge %d\n", i);
- k++;
- l++;
- }
- }
- color[u] = 2;
- t = t+1;
- f[u] = t;
- }
- int main()
- {
- int i,j;
- for(i=0;i<7;i++)
- {
- for(j=0;j<7;j++)
- {
- g[i][j] = 0;
- }
- }
- // Graph initialize
- g[0][1] = 1;
- g[0][2] = 1;
- g[0][3] = 1;
- g[1][0] = 1;
- g[1][3] = 1;
- g[1][5] = 1;
- g[2][0] = 1;
- g[2][4] = 1;
- g[2][6] = 1;
- g[3][0] = 1;
- g[3][1] = 1;
- g[3][6] = 1;
- g[4][2] = 1;
- g[5][1] = 1;
- g[5][6] = 1;
- g[6][2] = 1;
- g[6][3] = 1;
- g[6][5] = 1;
- for(i=0;i<7;i++)
- {
- for(j=0;j<7;j++)
- {
- printf("%d ",g[i][j]);
- }
- printf("\n");
- }
- DFS(g);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment