Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1511189) | Cod sursa (job #2423881)
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n,m,s;
const int nmax=100005;
int dis[nmax];
vector<int>graph[nmax];
queue<int>Q;
void BFS()
{
int index,vecin;
while(!Q.empty())
{
index=Q.front();
Q.pop();
for(int i=0;i<graph[index].size();++i)
{
int vecin=graph[index][i];
if(dis[vecin]==-1)
{
Q.push(vecin);
dis[vecin]=dis[index]+1;
}
}
}
}
int main()
{
cin>>n>>m>>s;
for( int i=1;i<=m;++i)
{
int a,b;
cin>>a>>b;
graph[a].push_back(b);
}
for(int i=1;i<=n;++i)
dis[i]=-1;
dis[s]=0;
Q.push(s);
BFS();
for(int i=1;i<=n;++i)
cout<<dis[i]<<" ";
return 0;
}