邻接表 + BFS
queue<int> q; q.push(s); vis[s]=1; while(!q.empty()){ int u=q.front(); q.pop(); for(int v:adj[u]) if(!vis[v]){ vis[v]=1; q.push(v); } }
DFS 递归
void dfs(int u){ vis[u]=1; for(int v:adj[u]) if(!vis[v]) dfs(v); } 深入到底再回溯。
C++ 机试动画
本课导读
图题、网格题一上来就要建图和遍历。这一课讲邻接表存图,以及 BFS(队列层序)和 DFS(递归深入)两种遍历。
queue<int> q; q.push(s); vis[s]=1; while(!q.empty()){ int u=q.front(); q.pop(); for(int v:adj[u]) if(!vis[v]){ vis[v]=1; q.push(v); } }
void dfs(int u){ vis[u]=1; for(int v:adj[u]) if(!vis[v]) dfs(v); } 深入到底再回溯。
把 C++ 做题手感练出来
这套课只讲机试最常用的 C++:输入输出、类型、数组、字符串和 STL。先把这些模板练熟,再去刷数据结构和算法题,效率会高很多。