BFS SDUT 图结构练习——BFS——从起始点到目标点的最短步数
fro < re 然后用结构体记录上一步的步数。
View Code
图结构练习——BFS——从起始点到目标点的最短步数 #include<stdio.h> #include<string.h> int map[1005][1005]; struct node { int i; int count; } q[2005]; int pro[1005]; int fro; int re; int main() { int d,e,s,i,j,a,b,t; while(scanf("%d %d",&d,&e) != EOF) { memset(map,0,sizeof(map)); memset(pro,0,sizeof(pro)); for(i = 0;i < e;i++) { scanf("%d %d",&a,&b); map[a][b] = 1; } fro = 0; re = 0; pro[d] = 1; q[re].count = 0; q[re++].i = d; int leap = 1; while(fro < re) { int num; int v; v = q[fro].i; num = q[fro].count; fro++; pro[v] = 1; for(i = 1;i <= d;i++) { if(map[v][i] == 1 && !pro[i]) { q[re].i = i; q[re].count = num+1; if(i == 1) { leap = 0; break; } re++; pro[i] = 1; } } if(!leap) break; } if(leap) puts("NO"); else printf("%d\n",q[re].count); } return 0; }