當我們想要遍歷一張圖的時候,我們就會使用 DFS/BFS
DFS | BFS |
---|---|
使用遞迴或 Stack 的概念 會不停地往下走 |
使用 Queue 的概念 會以較近的點開始 |
vector<int> adj[N];
int visited[N];
void dfs(int u){
for(auto v : adj[u]){
if(!visited[v]){
dfs(v);
}
}
}
queue<int> q;
q.push(s);
while(!q.empty()){
int u = q.front(); q.pop();
for(auto v : adj[u]){
if(!visited[v])
q.push(v);
}
}
Directed Acyclic Graph
由於這個特性,我們可以利用這個來當
DP 的轉移順序
也就是我們常說的在 DAG 上 DP
Disjoint Set Union