邻接矩阵:
int n,G[MAXN][MAXN];
bool inq[MAXN];
void BFS(int u)
{
queue<int> q;
q.push(u);
inq[u]=true;
while(!q.empty())
{
int u=q.front();
q.pop();
FOR(v,0,n)
{
if(inq[v]==false && G[u][v]!=oo){
q.push(v);
inq[v]=true;
}
}
}
}
void BFSTrave()
{
FOR(u,0,n)
{
if(inq[u]==false) BFS(u);
}
}
邻接表:
vector<int> Adj[MAXN];
int n;
bool inq[MAXN];
void BFS(int u)
{
queue<int> q;
q.push(u);
inq[u]=true;
while(!q.empty())
{
int u=q.front();
q.pop();
FOR(i,0,Adj[u].size())
{
int v=Adj[u][i];
if(inq[v]==fase){
q.push(v);
inq[v]=true;
}
}
}
}
void BFSTrave(){
FOR(u,0,n)
{
if(inq[u]==false){
BFS(u);
}
}
}