struct
node
{
int id;
int w;
node* next;
} ;
struct arr_node {
int id;
node* head;
} ;
arr_node a[N];
int color[N],d[N],f[N],from[N],time;
void Init() {
int i;
for(i=0;i<n;i++){
color[i]=0; // 0:white 1:gray 2:black
from[i]=-1;
}
}
void DFS() {
Init();
int i;
time=0;
for(i=0;i<n;i++){
if(color[i]==0) DFS_visit(int id);
}
}
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;
}
// cost 16'
int id;
int w;
node* next;
} ;
struct arr_node {
int id;
node* head;
} ;
arr_node a[N];
int color[N],d[N],f[N],from[N],time;
void Init() {
int i;
for(i=0;i<n;i++){
color[i]=0; // 0:white 1:gray 2:black
from[i]=-1;
}
}
void DFS() {
Init();
int i;
time=0;
for(i=0;i<n;i++){
if(color[i]==0) DFS_visit(int id);
}
}
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;
}
// cost 16'