Pagini recente » Cod sursa (job #1350754) | Cod sursa (job #1341645) | Cod sursa (job #892712) | Cod sursa (job #239417) | Cod sursa (job #753612)
Cod sursa(job #753612)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector <int> G[100010];
queue <int> Q;
int n,m,nod,x,y;
int lg[100010],sel[100010];
ifstream f("bfs.in");
ofstream g("bfs.out");
void bf(int x) {
Q.push(x);sel[x]=1;lg[x]=0;
while (!Q.empty())
{
int a=Q.front();
int i;
for ( i=0;i<G[a].size();++i)
if(sel[G[a][i]]==0) {
int r=G[a][i];
Q.push(r);
sel[r]=1;
lg[r]=lg[a]+1;
}
Q.pop();
}
}
int main()
{
int i;
f>>n>>m>>nod;
for (i=1;i<=m;i++)
{
f>>x>>y;
G[x].push_back(y);
}
for (i=1;i<=n;i++)
lg[i]=-1;
bf(nod);
for (i=1;i<=n;i++)
g<<lg[i]<<' ';
return 0;
}