1.深度优先搜索遍历(洪水填充法)
void dfs(int x){
vis[x]=1;
printf("%d",x);
for(int i=head[x];i;i=e[i].nxt){
int y=e[i].to;
if(vis[y]){
continue;
}
dfs(y);
}
}
2.广度优先搜索
(1).
queue<int> q;
int vis[MAXN];
void bfs(int x){
q.push(x);
vis[x]=1;
while(!q.empty()){
int u=q.front();
q.pop();
printf("%d ",u);
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(!vis[v]){
q.push(v);
vis[v]=1;
}
}
}
}
(2).
int vis[MAXN];
int q[MAXN];
void bfs(int x){
memset(q,0,sizeof(q));
int front=0,rear=0;
rear++;
q[rear]=x;
vis[x]=1;
while(front!=rear){
front++;
printf("%d",q[front]);
for(int i=head[q[front]];i;i=e[i].nxt){
int y=e[i].to;
if(!vis[y]){
rear++;
q[rear]=y;
vis[y]=1;
}
}
}
}