提交时间:2024-04-06 09:39:15

运行 ID: 141664

#include<iostream> #include<queue> #include<cstdio> #include<vector> #include<cstring> using namespace std; const int NR=110; vector<int> g[NR]; bool flag[NR]; int dis[NR]; void spfa(int s) { memset(dis,0x3f,sizeof(dis)); queue<int> q; dis[s]=0; q.push(s); flag[s]=true; while(!q.empty()) { int u=q.front(); q.pop(); flag[u]=false; for(int i=0;i<g[u].size();i++) { int k=g[u][i]; if(dis[u]+1<dis[k]) { dis[k]=dis[u]+1; if(!flag[k]) { q.push(k); flag[k]=true; } } } } return; } int main() { int n,a,b,i,j; cin>>n>>a>>b; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { char c; cin>>c; if(c=='1') g[i].push_back(j); } //for(i=1;i<=n;i++) //{ // for(j=0;j<g[i].size();j++) cout<<g[i][j]<<" "; // cout<<endl; //} spfa(a); cout<<dis[b]-1; return 0; }