DFS邻接矩阵版
int n,G[MAXV][MAXV];
bool visit[MAXV]={false};
void DFS(int u,int depth){
visit[u]=true;
for(int v=0;v<n;v++){
if(visit[v]==false&&G[u][v]!=INF){
DFS(v,depth+1);
}
}
}
void DFSTrave(){
for(int u=0;u<n;u++){
if(vis[u]==false){
DFS(u,1)
}
}
}
DFS邻接表版
#include<vector>
using namespace std;
int MAXV;
vector<int>Adj[MAXV];
int n;
bool visit[MAXV]={false};
void DFS(int u,int depth){
visit[u]=true;
for(int i=0;i<Adj[u].size();i++){
int v=Adj[u][i];
if(visit==false){
DFS(v,depth+1);
}
}
}
void DFSTrave(){
for(int u=0;u<n;u++){
if(vis[u]==false){
DFS(u,1);
}
}
}
DFS算法
最新推荐文章于 2023-10-16 00:05:41 发布