voidbfs(ints){//s 为选定的遍历图的起点Queue<int> queue;//定义一个队列queue.push(s);while(!queue.empty()){inttop = queue.top();//出队队首元素queue.pop();for(访问 top 的所有邻接点){//每轮的时间复杂度为 O(n)if(如果该邻接点未曾入队){ 将该结点入队; } } } } 可以看到 DFS 和...
所以邻接表版的 dfs 遍历所有邻接点的时间复杂度为 O(e1 + e2 + e3 + ... + en) ,因为所有边数之和为 E , 所以时间复杂度为 O(E) , 又因为访问每个顶点都必须被访问一次, 比如设置vis[i] = true, 这个操作一共要执行 V 次,所以,设置所有顶点为已访问的时间复杂度为O(V), 所以总的时间为查找...