邻接矩阵版:
int n,G[MAXN][MAXN];
bool vis[MAXN];
void DFS(int u,int depth)
{
vis[u]=true;
FOR(v,0,n)
{
if(vis[v]==false&&G[u][v]!=oo){
DFS(v,depth+1);
}
}
}
void DFSTrave()
{
FOR(u,0,n)
{
if(vis[u]==false)
{
DFS(u,1);
}
}
}
邻接表:
vector<int> Adj[MAXN];
int n;
bool vis[MAXN];
void DFS(int u,int depth)
{
vis[u]=true;
FOR(i,0,Adj[u].size())
{
int v=Adj[u][i];
if(vis[v]==false){
DFS(v,depth+1);
}
}
}
void DFSTrave()
{
FOR(u,0,n)
{
if(vis[u]==false)
{
DFS(u,1);
}
}
}