#include<cstdio>
#include<queue>
using namespace std;
struct node{
int v; //顶点编号!
int layer;
};
const int maxn=1025;
const int inf=1000000000;
//邻接矩阵版本!
int n,g[maxn][maxn]={0};
bool inq[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<node> adj[maxn];
void bfss(int s){ //已修改,可记录层数!
queue<node> q;
node start;
start.v=s;
start.layer=0;
q.push(start);
inq[start.v]=true;
while(!q.empty()){
node top=q.front();
q.pop();
int u=top.v; //为了减少下面的代码量,用一个变量代替之!
for(int i=0;i<adj[u].size();i++){
node next=adj[u][i]; //向量空间(非编号)里面存的才是顶点!
next.layer=top.layer+1;
if(inq[next.v]==false){
q.push(next);
inq[next.v]=true;
}
}
}
}
void bfstravee(){
for(int u=0;u<n;u++){
if(inq[u]==false){
bfss(u);
}
}
}
int main(){
return 0;
}
BFS邻接表和邻接矩阵版本
最新推荐文章于 2021-03-23 19:56:38 发布