Pagini recente » Cod sursa (job #283339) | Cod sursa (job #2205517) | Cod sursa (job #2913073) | Cod sursa (job #1873047) | Cod sursa (job #2795162)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
class Graf{
public:
Graf(){}
void citire()
{
in>>m_nrNoduri>>m_nrMuchii>>m_start;
for(int i=0;i<m_nrMuchii;i++)
{
int x,y;
in>>x>>y;
m_list[x].push_back(y);
}
}
void bfs()
{
for(int i=1;i<=m_nrNoduri;i++)
{
m_viz[i]=2000000000;
}
m_viz[m_start]=0;
m_q[1]=m_start;
int p=1;
int u=1;
while(p<=u) //<=
{
int r=m_q[p];
for(int i=0;i<(m_list[r].size());i++)
{
int e=m_list[r][i];
// cout<<e<<' ';
if(m_viz[r]+1<m_viz[e])
{
m_viz[e]=m_viz[r]+1;
u++;
m_q[u]=e;
}
}
p++;
}
for(int i=1;i<=m_nrNoduri;i++)
{
if(m_viz[i]!=2000000000)
out<<m_viz[i]<<' ';
else
out<<"-1 ";
}
}
private:
int m_nrMuchii;
int m_nrNoduri;
int m_start;
int m_viz[100001];
int m_q[100001];
vector<int> m_list[100001];
};
int main() {
Graf graf;
graf.citire();
graf.bfs();
}