Pagini recente » Cod sursa (job #1159473) | Cod sursa (job #869560) | Cod sursa (job #756782) | Cod sursa (job #2773835) | Cod sursa (job #2348786)
#include <fstream>
#include<vector>
#define maxn 100010
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector <int> a[maxn];
int cost[maxn],s[maxn],g[maxn],n,m,st,l;
void citire()
{
int x,y;
cin>>n>>m>>st;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
a[x].push_back(y);
}
for(int i=1;i<=n;i++)
g[i]=a[i].size();
}
void bfs(int nod)
{
int i=1,j=1;
l=1;
cost[nod]=0;
s[1]=nod;
while(i<=l)
{
for(j=0;j<g[s[i]];j++)
{
if(cost[a[s[i]][j]]==0&&a[s[i]][j]!=nod)
{
l++;
s[l]=a[s[i]][j];
cost[a[s[i]][j]]=cost[s[i]]+1;
}
}
i++;
}
}
int main()
{
citire();
bfs(st);
for(int i=1;i<=n;i++)
if(cost[i]==0)
cost[i]=-1;
cost[st]=0;
for(int i=1;i<=n;i++)
cout<<cost[i]<<" ";
return 0;
}