DFS

struct node ... {
intid;
intw;
node
*next;
}
;

struct arr_node ... {
intid;
node
*head;
}
;

arr_nodea[N];
int color[N],d[N],f[N],from[N],time;

void Init() ... {
inti;
for(i=0;i<n;i++)...{
color[i]
=0;//0:white1:gray2:black
from[i]=-1;
}

}


void DFS() ... {
Init();
inti;
time
=0;
for(i=0;i<n;i++)...{
if(color[i]==0)DFS_visit(intid);
}

}


void DFS_visit( int id) ... {
color[id]
=1;
d[id]
=++time;
node
*p=arr_node[id].head;
while(NULL!=p)...{
if(0==color[p->id])...{
DFS_visit(p
->id);
from[p
->id]=id;
}

p
=p->next;
}

color[id]
=2;
f[id]
=++time;
}

// cost16'

你可能感兴趣的:(F#)