ppt 图的基本算法 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);
}