Pagini recente » Rating Teodorescu Ciprian (ciprianteo) | Cod sursa (job #2606001) | Cod sursa (job #572911) | Cod sursa (job #963310) | Cod sursa (job #2260081)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int main()
{
int n,m,go;
fin>>n>>m>>go;
go--;
vector<vector<int>>v(n);
while(m--)
{
int a,b;
fin>>a>>b;
a--;
b--;
v[a].push_back(b);
}
vector<int>a(n);
for(int i=0;i<n;i++)
{
a[i]=-1;
}
a[go]=0;
queue<int>q;
q.push(go);
while(!q.empty())
{
int nod=q.front();
q.pop();
for(auto &nou:v[nod])
{
if(a[nou]==-1)
{
a[nou]=a[nod]+1;
q.push(nou);
}
}
}
for(int i=0;i<n;i++)
{
fout<<a[i]<<" ";
}
fout<<"\n";
return 0;
}