我在做题时编译一段代码(最后的注释是样例):
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int>a[1000006];
int vir[1000006];
int x,y;
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
vir[i]=-1;
}
vir[1]=0;
queue<int>q;
q.push(1);
while(!q.empty())
{
int now=q.front();
q.pop();
for(int i=0;i<int(a[i].size());i++)
{
if(vir[i]!=-1)
{
vir[i]=vir[now]+1;
q.push(i);
}
}
}
for(int i=1;i<=n;i++)cout<<vir[i]<<' ';
return 0;
}
/*
4 3
1 2
2 3
1 3
*/
随然是错的,但能跑,后来发现了错误:
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int>a[1000006];
int vir[1000006];
int x,y;
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
vir[i]=-1;
}
vir[1]=0;
queue<int>q;
q.push(1);
while(!q.empty())
{
int now=q.front();
q.pop();
for(int i=0;i<int(a[now].size());i++)//这里的a[now]才是对的
{
if(vir[i]!=-1)
{
vir[i]=vir[now]+1;
q.push(i);
}
}
}
for(int i=1;i<=n;i++)cout<<vir[i]<<' ';
return 0;
}
/*
4 3
1 2
2 3
1 3
*/
却输入后不能动,求助!!!