Pagini recente » Cod sursa (job #2553137) | Cod sursa (job #2322571) | Cod sursa (job #2376109) | Cod sursa (job #3248967) | Cod sursa (job #1651165)
#include<iostream>
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
vector<int> bfs(const vector<vector<int> > &graph,const int &v,const int &e,const int &s)
{
vector<int> dis;
dis.resize(v,-1);
dis[s-1]=0;
queue<int> q;
int elem,i;
q.push(s-1);
while(!q.empty())
{
elem=q.front();
for(i=0;i<graph[elem].size();i++)
{
if(dis[graph[elem][i]]==-1)
{
q.push(graph[elem][i]);
dis[graph[elem][i]]=dis[elem]+1;
}
}
q.pop();
}
return dis;
}
int main()
{
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int v,e,s,i,aux1,aux2;
vector<vector<int> > graph;
vector<int> distance;
fin>>v>>e>>s;
graph.resize(v);
for(i=0;i<e;i++)
{
fin>>aux1>>aux2;
aux1--;
aux2--;
graph[aux1].push_back(aux2);
}
distance=bfs(graph,v,e,s);
for(i=0;i<v;i++) fout<<distance[i]<<' ';
return 0;
}