Pagini recente » Cod sursa (job #2333489) | Cod sursa (job #3180629) | Cod sursa (job #1137823) | Cod sursa (job #386167) | Cod sursa (job #2122750)
#include<bits/stdc++.h>
#define NMAX 100002
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> a[100002];
int viz[NMAX],n,m,s;
void bfs(int s)
{
queue<int> q;
int u;
q.push(s);
while(!q.empty())
{
u=q.front();
q.pop();
//for(vector<int>::iterator it=a[u].begin(); it!=a[u].end(); ++it) if(viz[*it]==0)
for(int it=0;it<a[u].size();++it)
if(a[u][it]!=u)
if(viz[a[u][it]]==0)
{
q.push(a[u][it]);
viz[a[u][it]]=viz[u]+1;
}
}
}
int main()
{
int x,y;
f>>n>>m>>s;
for(int i=1;i<=m;i++)
{
f>>x>>y;
a[x].push_back(y);
}
bfs(s);
for(int i=1;i<=n;++i)
{
if(i==s)
g<<0;
else
if(viz[i]==0)
g<<-1;
else
g<<viz[i];
g<<" ";
}
return 0;
}