SDUT 2141数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2141
这个题听虎哥给讲的,开始自己想的时候老是以为BFS就必须得用递归,这个题的思路没有想象的那么复杂啊。
#include<stdio.h> #include<string.h> int p[101][101],ans[101],o[101]; int main() { int a,b,c,d,i,j,k,m,n; scanf("%d",&a); while(a--) { memset(ans,0,sizeof(ans)); memset(o,0,sizeof(o)); scanf("%d%d%d",&b,&c,&d); ans[1] = d; m = 1; n = 1; o[d] = 1; for(i = 1; i <= c; i ++) { scanf("%d%d",&j,&k); p[j][k] = 1; p[k][j] = 1; } while(m != b) { k=1; for(i = n; i <= m; i ++) { for(j = 0; j <= b-1; j ++) { if(o[j] == 0 && p[ans[i]][j] == 1) { ans[m+k] = j; k ++; o[j] = 1; } } } n = m+1; m = m+k-1; } for(i = 1; i <= b; i ++) { if(i == 1) printf("%d",ans[i]); else printf(" %d",ans[i]); } printf("\n"); } return 0; }

浙公网安备 33010602011771号