Pagini recente » Cod sursa (job #1376503) | Cod sursa (job #2657294) | Cod sursa (job #2048108) | Cod sursa (job #1246455) | Cod sursa (job #844207)
Cod sursa(job #844207)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int n,m,s;
vector <int> lista_adiacenta[1000000];
int distanta[100000];
queue < pair<int,int> > noduri_de_parcurs;
inline void citire()
{
ifstream f("bfs.in");
f>>n>>m>>s;
--s;
int x,y;
int i;
for(i=0;i<m;++i)
{
f>>x>>y;
--x;--y;
lista_adiacenta[x].push_back(y);
}
for(i=0;i<100000;++i)
distanta[i]=-1;
f.close();
}
inline void expand(int nod,int adancime_noua)
{
distanta[nod] = adancime_noua;
++adancime_noua;
for(unsigned int i = 0; i != lista_adiacenta[nod].size(); ++i)
if(distanta[lista_adiacenta[nod][i]] == -1)
noduri_de_parcurs.push(make_pair(lista_adiacenta[nod][i],adancime_noua));
}
inline void afisare()
{
ofstream g("bfs.out");
g<<distanta[0];
for(int i=1; i != n; ++i)
g<<" "<<distanta[i];
g.close();
}
int main()
{
citire();
noduri_de_parcurs.push(make_pair(s,0));
pair <int,int> nod_nou;
while(!noduri_de_parcurs.empty())
{
nod_nou = noduri_de_parcurs.front();
noduri_de_parcurs.pop();
expand(nod_nou.first,nod_nou.second);
}
afisare();
return 0;
}