Pagini recente » Cod sursa (job #1369837) | Cod sursa (job #2364687) | Cod sursa (job #1599667) | Cod sursa (job #1108818) | Cod sursa (job #1215909)
#include<fstream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
const int NMAX=100010;
vector <int> G[NMAX];
queue <int> q;
int D[NMAX],Viz[NMAX],P[NMAX],n,m,x,y,s,i;
int main()
{
cin>>n>>m>>s;
for (i=1;i<=m;i++)
{
cin>>x>>y;
G[x].push_back(y);
}
memset(D,-1, sizeof D);
D[s]=0;
memset(Viz,0, sizeof Viz);
Viz[s]=1;
q.push(s);
P[s]=-1;
while (!q.empty())
{
int v=q.front();
q.pop();
for (size_t i=0; i<G[v].size(); i++)
{
int to=G[v][i];
if (!Viz[to])
{
Viz[to]=1;
q.push(to);
D[to]=D[v]+1;
P[to]=v;
}
}
}
for (i=1;i<=n;i++) cout<<D[i]<<" "; cout<<"\n";
return 0;
}