您的位置:首页 > 其它

图结构练习——BFS——从起始点到目标点的最短步数

2016-08-19 15:57 267 查看
#include<bits/stdc++.h>
using namespace std;
typedef struct no
{
int data;
int step;
} node;
int num[2000][2000],visit[10010];
int bfs(int b,int k)
{
node t,f;

int i;
queue<node> q;
t.data=b;
t.step=0;
q.push(t);
visit[b]=1;
while(!q.empty())
{
f=q.front();
q.pop();
if(f.data==1)
{
printf("%d\n",f.step);
return 0;
}
for(i=0; i<k; i++)
{
if(num[f.data][i]&&!visit[i])
{
t.data=i;
t.step=f.step+1;
q.push(t);
visit[i]=1;
}
}
}
printf("NO\n");

return 0;
}
int main()
{
int n,m,i,u,v;
while(~scanf("%d%d",&n,&m))
{
memset(num,0,sizeof(num));
memset(visit,0,sizeof(visit));
for(i=0; i<m; i++)
{
scanf("%d %d",&u,&v);
num[u][v]=1;
}
bfs(n,n);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐