Pagini recente » Cod sursa (job #166335) | Cod sursa (job #2660201) | Cod sursa (job #1227935) | Cod sursa (job #2853715) | Cod sursa (job #229135)
Cod sursa(job #229135)
#include<stdio.h>
#include<queue>
#include<vector>
#define N 100002
using namespace std;
vector<int> v[N];
bool viz[N];
vector<int> d(N,-1);
queue<int> c;
int n,m,s;
void bf()
{
c.push(s);
d[s]=0;
while(!c.empty())
{
int st=c.front();
for(vector<int>::iterator it=v[st].begin(); it!=v[st].end(); ++it)
if(!viz[*it])
{
viz[*it]=1;
c.push(*it);
d[*it]=d[st]+1;
}
c.pop();
}
}
void afis()
{
for(int i=1;i<=n;++i)
printf("%d ",d[i]);
printf("\n");
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
int a,b,i;
for(i=0;i<m;++i)
{
scanf("%d%d",&a,&b);
v[a].push_back(b);
}
viz[s]=1;
bf();
afis();
return 0;
}