Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
141664 | 黄恩宁 | 人际关系 | C++ | 通过 | 100 | 0 MS | 264 KB | 879 | 2024-04-06 09:39:15 |
#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; }