约 10 分钟
DFS 用递归很自然:进入一个点先标记已访问,再对每个未访问的邻居递归下去。void dfs(int u){ vis[u]=1; for(int v:g[u]) if(!vis[v]) dfs(v); }。从某点出发能 dfs 到的所有点,构成一个连通块。
void dfs(int u){ vis[u]=1; for(int v:g[u]) if(!vis[v]) dfs(v); }
vis[] 数组在 DFS 里起什么作用?
vis[]
登录 后可看答案