BFS






输入: 8 9 1 2 1 3 2 4 2 5 3 6 3 7 4 8 5 8 6 7 // 图的BFS,使用C++队列 #include <stdio.h> #include <string.h> #include <queue> using namespace std; #define N 10 int g[N][N],bz[N],n,m; queue <int> q; void BFS(int cur) { int j; bz[cur]=1; q.push(cur); while (!q.empty()) { cur=q.front(); printf(" V%d ", cur);q.pop(); for (j=1;j<=N;j++) if (bz[j]==0 && g[cur][j]==1) { q.push(j); bz[j]=1; } } } void input() { int i,j,f,t; scanf("%d%d",&n,&m); for (int i=1; i<=m; i++) { scanf("%d%d",&f,&t); g[f][t]=g[t][f]=1; } } int main() { memset(g,0,sizeof(g)); memset(bz,0,sizeof(bz)); input(); BFS(1); } ************************************************************************************* // 图的BFS #include <stdio.h> #include <string.h> #define N 10 int g[N][N],bz[N],n,m,q[N],qe,qs; void BFS(int cur) { int j,qs,qe; qs=qe=0; bz[cur]=1; q[qe++]=cur; while (qs<qe) { cur=q[qs++]; printf(" V%d ", cur); for (j=1;j<=N;j++) { if (bz[j]==0 && g[cur][j]==1) { q[qe++]=j; bz[j]=1; } } } } void input() { int i,j,f,t; scanf("%d%d",&n,&m); for (int i=1; i<=m; i++) { scanf("%d%d",&f,&t); g[f][t]=g[t][f]=1; } } int main() { int i,j; memset(g,0,sizeof(g)); memset(bz,0,sizeof(bz)); input(); BFS(1); }

  

posted @ 2013-12-06 13:54  博园少主  阅读(182)  评论(0编辑  收藏  举报