Pagini recente » Cod sursa (job #2079599) | Cod sursa (job #2736224) | Cod sursa (job #1791392) | Cod sursa (job #1731998) | Cod sursa (job #1337104)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int NMAX = 100000;
vector<int> v[NMAX + 5];
int n,m,s,sol[NMAX + 5];
queue<int> coada;
void read()
{
in>>n>>m>>s;
int a,b;
for(int i = 1 ; i <= m ; i++){
in>>a>>b;
v[a].push_back(b);
}
in.close();
}
void bfs(int start)
{
sol[start] = 1;
coada.push(start);
while(!coada.empty()){
int k = coada.front();
for(int i = 0 ; i < v[k].size() ; i++){
if(!sol[v[k][i]]){
sol[v[k][i]] = sol[k] + 1;
coada.push(v[k][i]);
}
}
coada.pop();
}
}
void afis()
{
for(int i = 1 ; i <= n ; i++)
out<<sol[i]-1<<" ";
out.close();
}
int main()
{
read();
bfs(s);
afis();
return 0;
}