Pagini recente » Cod sursa (job #931571) | Cod sursa (job #1067300) | Cod sursa (job #1371893) | Cod sursa (job #86460) | Cod sursa (job #753610)
Cod sursa(job #753610)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector <int> G[100000];
queue <int> Q;
int n,m,nod,x,y;
int lg[100000],sel[100000];
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;
}