vから始めて最後まで行けるかどうかを判別
bool dfs(v){
if(v is 终点)return true;
if(v is 旧点)return false;
将v标记为旧点;
对和v相邻的每个节点u{
if(dfs(u)==true)return true;
}
return false;
}
int main() {
所有点都标记为新点;
起点=~;
终点=~;
cout<<dfs(起点)<<endl;
return 0;
}
パスを見つける
//寻找一条路径
Node path [MAX_LEN];//MAX_LEN取节点总数
int depth;
bool dfs(v){
if(v为终点){
path[depth] = v;
return true;
}
if(v为旧点)return false;
将v标记为旧点;
path[depth]=v;
++depth ;
对和v相邻的每个节点u{
if(dfs(u))return true;
}
--depth;
return false;
}
//寻找多条路径
void dfs_1(v){
if(v为终点){
path[depth] = v;
for(int i = 0;i <= depth;i++)
cout<<path[i]<<endl;
return ;
}
if(v为旧点)return;
对和v相邻的每个节点u{
将v标记为旧点;
path[depth]=v;
++depth ;
dfs(v);
--depth;
}
return;
}
int main(){
将所有点都标记为新点;
depth = 0;
if(dfs(起点)) {
for(int i = 0;i <= depth;i++)
cout<<path[i]<<endl;
}
}
グラフ上のすべてのポイントをトラバースします
dfs(v)(
if(v是旧点)return;
将v标记为旧点;
对和v相邻的每个点u{
dfs(u);
}
)
int main(){
将所有点都标记为新店;
while(在图中能找到新点k) dfs(k);
}