问题描述
所以,我的代码在下面
#include <iostream>
#include <queue>
using namespace std;
bool comp (pair<int,int> a,pair<int,int> b) {
if (a.second==b.second) return a.first<b.first;
return a.second<b.second;
}
int main () {
int n,m;
bool visited[n+1];
cin>>n>>m;
int mat[n+1][n+1];
vector<pair<int,int> > v;
for (int i=1; i<=n; i++) {
for (int j=1; j<=n; j++) {
cin>>mat[i][j];
}
}
queue<pair<int,int> > q;
q.push(make_pair(m,0));
visited[m]=1;
//for (int i=1; i<=n; i++) { for (int j=1; j<=n; j++) { if (mat[i][j]!=0&&mat[i][j]!=1 )cout<<mat[i][j]<<" ";} cout<<endl;}
while (!q.empty()) {
pair <int,int> curr=q.front();
v.push_back(curr);
q.pop();
for (int i=1; i<=n; i++) {
if (mat[curr.first][i]&&!visited[i]&&curr.first!=i) {
q.push(make_pair(i,curr.second+1));
visited[i]=1;
}
}
}
sort(v.begin(),v.end(),comp);
int cdist=0;
for (pair<int,int> i: v) {
if (cdist!=i.second) cout<<endl;
cdist=i.second;
cout<<i.first<<" ";
}
return 0;
}
我知道问题出在哪里,不必为此烦恼,我在声明n之前声明了一个长度为[n + 1]的访问数组。这是一个实验。我发现有趣的是,如果我在代码中包括了注释行,则代码中的最后一个循环将完全打印我想要的内容,而如果我将其排除在外,则代码将不会打印任何内容。为什么会出现这种现象?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)