问题
分别用邻接矩阵和邻接表实现图的BFS算法
邻接矩阵
//邻接矩阵版
int n,G[maxn][maxn];
bool vis[maxn] = {false};
void BFS(int u){
queue<int> q;
q.push(u);
inq[u] = true;
while (!q.empty()){
int u = q.front();
q.pop();
for (int v = 0; v < n; ++v) {
if(inq[v] == false && G[u][v]!=INF){
q.push(v);
inq[v] = true;
}
}
}
}
void BFSTrave(){
for (int u = 0; u < n; ++u) {
if(inq[u] == false){
BFS(u);
}
}
}
邻接表
//邻接表版本
vector<int> Adj[maxn];
void BFS1(int u){
queue<int> q;
q.push(u);
inq[u] = true;
while (!q.empty()){
int u = q.front();
q.pop();
for (int i = 0; i < Adj[u].size(); ++i) {
int v = Adj[u][i];
if(inq[v] == false){
q.push(v);
inq[v] = true;
}
}
}
}
void BFSTrave1(){
for (int u = 0; u < n; ++u) {
if(inq[u]== false){
BFS1(u);
}
}
}