#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef struct arc{
int adjvex;
struct arc *next;
}arcnode;
typedef struct vexnode{
int data;
int vnum;
struct arc *first;
}G;
int visit[100];
G* creatg(){
int m,n,x,y;
arcnode *p;
cin>>m>>n;
G *g=new G[m+1];
g[0].vnum=m;
for(int i=1;i<=m;i++){
cin>>x;
g[i].data=x;
g[i].first=NULL;
}
cin>>x>>y;
while(n--){
p=new arcnode;
p->adjvex=y;
p->next=g[x].first;
g[x].first=p;
p=new arcnode;
p->adjvex=x;
p->next=g[y].first;
g[y].first=p;
if(n>0)
cin>>x>>y;
}
return g;
}
void bfs(G *g,int v){
int queue[100];
int rear=0,front=0;
queue[rear++]=v;
visit[v]=1;
while(rear!=front){
int getvex=queue[front++];
cout<<'v'<<getvex<<" ";
//visit[getvex]=1;
arcnode *p=g[getvex].first;
while(p!=NULL&&visit[p->adjvex]==0){
queue[rear++]=p->adjvex;
visit[p->adjvex]=1;
p=p->next;
}
}
}
void bfsqq(G *g){
for(int j=1;j<=g[0].vnum;j++){
if(visit[j]==0) bfs(g,j);
}
}
int main()
{
G *g=creatg();
bfsqq(g);
//cout << "Hello world!" << endl;
return 0;
}
7043 利用邻接表实现无向图的广度优先遍历
最新推荐文章于 2022-08-20 15:24:10 发布