Pagini recente » Cod sursa (job #571086) | Cod sursa (job #1971827) | Cod sursa (job #2167738) | Cod sursa (job #145282) | Cod sursa (job #1211400)
#include <fstream>
#include <iostream>
#include <vector>
#include <cstring>
#define nmax 1000001
using namespace std;
vector <int> s[nmax];
long v[nmax],nr[nmax],p[nmax];
ifstream fi("bfs.in");
ofstream fo("bfs.out");
int main(void)
{
int n,m,nod;
fi>>n>>m>>nod;
for(int i=1;i<=m;++i)
{
int x,y;
fi>>x>>y;
s[x].push_back(y);
}
for(int i=1;i<=n;++i)
nr[i]=s[i].size();
memset(v,-1,sizeof(v));
v[nod]=0;
long f,g=1;
p[1]=nod;
for (f=1;f<=g;++f)
{
for (long i=0;i<nr[p[f]];++i)
if (v[s[p[f]][i]]==-1)
{
p[++g]=s[p[f]][i];
v[p[g]]=v[p[f]]+1;
}
}
for (int i=1;i<=n;++i)
fo<<v[i]<<" ";
fo<<"\n";
fo.close();
return 0;
}