//图的遍历
//DFS:类似于树的先序遍历
void dfs(Vertex V) {
visited[V]=true;
for(V的每个邻接点W)
if(!visited[W]) dfs(W);
}
/*N个顶点,E条边的时间复杂度:
1.邻接表存储图:O(N+E)
2.邻接矩阵存储图:O(n^2)
*/
//BFS:类似于树的层序遍历(队列)
void bfs(Vertex V) {
visited[V]=true;
Enqueue(V,Q);
while(!IsEmpty(Q)) {
V=Dequeue(Q);
for(V的每个邻接点w) {
if(!visited[w]) {
visited[w]=true;
Enqueue(w,Q);
}
}
}
}
/*N个顶点,E条边,时间复杂度:
1.邻接表存储图:O(N+E)
2.邻接矩阵存储图:O(N^2)
*/
/*
简单路径:无回路的简单路径
连通图:任意两点都连通
对于无向图,
连通分量:无向图的极大连通子图
极大顶点数,极大边数
对于有向图,
强连通:v和w存在双向路径
强连通图:任意两点强连通
强连通分量:有向图的极大强连通子图
*/