Pagini recente » Cod sursa (job #2331684) | Cod sursa (job #1142743) | Cod sursa (job #362606) | Arhiva de probleme | Cod sursa (job #2003075)
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
const int nm=100005;
vector<int>G[nm];
queue<int>q;
int viz[nm],d[nm],t[nm];
void BFS(int nod)
{
q.push(nod);
viz[nod]=1;
while(!q.empty())
{
int y=q.front(),x=G[y].size(),i;
q.pop();
for(i=0;i<x;i++)
if(!viz[G[y][i]])
{
viz[G[y][i]]=1;
d[G[y][i]]=d[y]+1;
t[G[y][i]]=y;
q.push(G[y][i]);
}
}
}
int main()
{
int n,m,i,u,v,nr=0,k;
cin>>n>>m>>k;
for(i=1;i<=m;i++)
{
cin>>u>>v;
G[u].push_back(v);
}
BFS(k);
for(i=1;i<=n;i++)
if(!d[i])
{
if(i==k)
cout<<"0 ";
else
cout<<"-1 ";
}
else
cout<<d[i]<<" ";
cin.close();
cout.close();
return 0;
}