Pagini recente » Cod sursa (job #770019) | Cod sursa (job #2532396) | Cod sursa (job #2775736) | Cod sursa (job #2362806) | Cod sursa (job #879558)
Cod sursa(job #879558)
#include<fstream>
#include<vector>
using namespace std;
int n,m,s,coada[100005],viz[100005];
vector<int> g[100005];
ofstream gout("bfs.out");
ifstream f("bfs.in");
void citire();
void afisare();
void bfs(int x);
int main()
{
citire();
bfs(s);
afisare();
gout.close();
f.close();
return 0;
}
void citire()
{
f>>n>>m>>s;
int x,y;
for(int i=1;i<=m;i++)
{
f>>x>>y;
g[x].push_back(y);
}
}
void afisare()
{
for(int i=1;i<=n;i++)
{
if(viz[i])
{
if(i!=s) gout<<viz[i]<<' ';
else gout<<'0'<<' ';
}
else gout<<"-1"<<' ';
}
}
void bfs(int x)
{
int ic,sc,dist;
ic=sc=dist=1;
coada[1]=x;
viz[x]=1;
vector<int>::iterator it;
while(ic<=sc)
{
for(it=g[x].begin();it!=g[x].end();it++)
{
if(!viz[*it])
{
viz[*it]=dist;
sc++;
coada[sc]=*it;
}
}
ic++;
x=coada[ic];
dist=viz[coada[ic]]+1;
}
}