Pagini recente » Cod sursa (job #772277) | Cod sursa (job #1180153) | Cod sursa (job #701521) | Cod sursa (job #2826014) | Cod sursa (job #1211374)
#include <fstream>
#include <iostream>
#include <vector>
#include <cstring>
#define nmax 100001
using namespace std;
vector <int> s[nmax];
int v[nmax],sol[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,nmax);
v[nod]++;
int f=1,g=1;
p[1]=nod;
sol[nod]=1;
while (f<=g)
{
for (int i=0;i<nr[p[f]];++i)
if (!sol[s[p[f]][i]])
{
p[++g]=s[p[f]][i];
++sol[s[p[f]][i]];
v[p[g]]=v[p[f]]+1;
}
++f;
}
for (int i=1;i<=n;++i)
fo<<v[i]<<" ";
fo<<"\n";
fo.close();
}