Pagini recente » Cod sursa (job #243308) | Cod sursa (job #1862087) | Cod sursa (job #942072) | Cod sursa (job #2902805) | Cod sursa (job #696148)
Cod sursa(job #696148)
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
#define dim 1000005
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define fs first
#define sc second
int d[100005], viz[100005],n , m, coada[dim];
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> v[dim];
void bfs(int sursa)
{
int inc=1, sf=0;
coada[++sf]=sursa;
memset(d,inf,sizeof(d));
d[sursa]=0;
while(inc<=sf)
{
int x=coada[inc];
viz[x]=1;
for(int k=0;k<v[x].size();++k)
if(viz[v[x][k]]==0)
{
d[v[x][k]]=d[x]+1;
coada[++sf]=v[x][k];
}
++inc;
}
}
int main()
{
int i, a, b,s;
fin>>n >>m >>s;
for(i=1;i<=m;++i)
{
fin>>a >>b;
v[a].pb(b);
}
bfs(s);
for(i=1;i<=n;++i)
if(d[i]==inf)
fout<<"-1 ";
else
fout<<d[i] <<" ";
return 0;
}