AC

せいしゅん404  •  3年前


#include<cstdio> 
#include<iostream> 
#include<cstring> 
using namespace std; 

int a[105][105],q[105][2]; 
bool p[105]; 
int main(void){ 
memset(p,true,sizeof(p)); 
int n,x,y,f,r,tmp; 
cin>>n>>x>>y; 
//读图 
for(int i=1;i<=n;i++) 
 for(int j=1;j<=n;j++) 
  cin>>a[i][j]; 

//设置队首队尾 
f=r=1; 
q[r][0]=x;//发起找人需求的人的编号 
q[r][1]=0;//关系数 
p[x]=false;//入队就标记为false 

//开始进行队列的操作 
while(f<=r){ 
 tmp=q[f][0]; 
 //判断,如果tmp就是要找的人的编号 
 if(tmp==y){ 
  cout<<q[f][1]-1<<endl; 
  return 0; 
 } 
 for(int i=1;i<=n;i++){ 
  //遍历他认识的每一个人 
  if(p[i]&&a[tmp][i]){ 
   r++; 
   q[r][0]=i; 
   q[r][1]=q[f][1]+1; 
   p[i]=false; 
  } 
 } 
 f++; 

return 0; 
}


评论:

请先登录,才能进行评论