Pagini recente » Cod sursa (job #407664) | Cod sursa (job #2060941) | Cod sursa (job #2060924)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fi("bfs.in");
ofstream fo("bfs.out");
const int nmax=1e5;
queue <int> Q;
vector <int> V[nmax];
int SEEN[nmax],PATH[nmax],n,m,i,x,y,source;
int main()
{
fi>>n>>m>>source;
for(i=1;i<=m;i++)
{
fi>>x>>y;
V[x].push_back(y);
}
Q.push(source);
PATH[source]=0;
while(!Q.empty())
{
x=Q.front();
SEEN[x]=1;
Q.pop();
for(i=0;i<V[x].size();i++)
{
y=V[x][i];
if(!SEEN[y])
{
Q.push(y);
SEEN[y]=1;
PATH[y]=PATH[x]+1;
}
}
}
for(i=1;i<=n;i++)
{
if(PATH[i]==0 && i!=source)
PATH[i]=-1;
fo<<PATH[i]<<" ";
}
fi.close();
fo.close();
return 0;
}