viod dfs(int cur, int dis){
if(dis > min) min = dis;
if(cur == n){//终止条件是达到目标城市(有时并不是刚好达到而终止,而是超过一)
if(dis < min) min = dis;
return;
}
for(int i = 1 ; i <= n; i++ ){
if(a[cur][i] == 1 && book[i] = 0){
book[i] = 1;
dfs(i, dis + a[cur][i]);
book[i] = 0;//有向图,需要恢复,否则无法继续向下延展
}
}
return;
}
网友评论