伪代码
#define Black 2
#define Gray 1
#define White 0
#define Infinite -1
#define NIL -1
struct map{
int d;
int f;
int color;
int parent;
} vertix[100];
int time;
void DSF(int a[100][100],int n){
int i;
for(i = 0;i<n;i++){
vertix[i].color = White;
vertix[i].parent = NIL;
}
time = 0;
for(i = 0;i<n;i++)
if(vertix[i] == White)
DSFvisit(a,n,i);
}
void DSFvisit(int a[100][100],int n,int num){
int i;
vertix[num] = Gray;
time++;
vertix[num].d = time;
for(i = 0;i<n;i++)
if(a[num][i])
if(vertix[i].color == White){
vertix[i].parent = num;
DSFvisit(a,n,i);
}
time++;
vertix[num].f = time;
vertix[num].color = Black;
}