Pagini recente » Cod sursa (job #597144) | Cod sursa (job #1068780) | Cod sursa (job #1658390) | Cod sursa (job #573331) | Cod sursa (job #1345032)
#include <iostream>
#include<vector>
#include<fstream>
#include<limits>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<vector<int> > a;
int n,s,viz[100001],c[100001],w[100001];
void bfs(int i)
{
int u,p,v;
c[1]=i;
viz[i]=1;
w[i]=0;
u=p=1;
while(p<=u)
{
v=c[p++];
for(vector<int>::iterator it=a[v].begin();it!=a[v].end();it++)
if(viz[*it]==0)
{
c[++u]=*it;
viz[*it]=1;
w[*it]=w[v]+1;
}
}
}
void citire()
{
int i,x,y,m;
f>>n>>m>>s;
a=vector<vector<int> >(n+1);
for(i=1;i<=n;i++) w[i]=-1;
for(i=1;i<=m;i++)
{
f>>x>>y;
a[x].push_back(y);
}
}
void afisare()
{
int i;
for(i=1;i<=n;i++) g<<w[i]<<" ";
}
int main()
{
citire();
bfs(s);
afisare();
return 0;
}