题目:
代码:
#include<bits/stdc++.h>
using namespace std;
int n,x,y;
struct node{
int num;//编号
int t;//步数
node(){}
node(int sum,int tt)
{
num=sum;
t=tt;
}
};
int mp[101][101];//图
bool flag[101];//标记
queue<node> q;
void bfs()
{
q.push(node(x,0));
flag[x]=true;//打标记
while(!q.empty())
{
node head=q.front();
q.pop();
if(head.num==y)
{
cout<<head.t-1;//一定要减一
return;
}
for(int i=1;i<=n;i++)
{
if(mp[head.num][i]&&!flag[i])
{
flag[i]=true;
q.push(node(i,head.t+1));
}
}
}
}
int main()
{
cin>>n>>x>>y;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>mp[i][j];//存图
}
}
bfs();
}