Pagini recente » Cod sursa (job #2091655) | Cod sursa (job #3161267) | Cod sursa (job #1003307) | Cod sursa (job #856982) | Cod sursa (job #676243)
Cod sursa(job #676243)
#include<fstream>
#include<queue>
#include<vector>
#define INF 0X3f3f3f
#define N 100001
using namespace std;
ofstream fout("bfs.out");
vector<int>G[N];
queue<int>Q;
vector<int>::iterator I;
int n,s,d[N],v[N];
void BFS (int start);
void citire();
int main()
{
citire();
BFS(s);
for(int i=1;i<=n;i++)
if(d[i]==INF)
fout<<-1<<" ";
else
fout<<d[i]<<" ";
return 0;
}
void citire()
{
ifstream fin("bfs.in");
int m;
fin>>n>>m>>s;
int x,y;
for(int i=1;i<=m;i++)
{
fin>>x>>y;
G[x].push_back(y);
}
}
void BFS(int start)
{
for(int i=1;i<=n;i++)
{ d[i]=INF;}
v[start]=1;
d[start]=0;
Q.push(start);
while(!Q.empty())
{
int k=Q.front();
for(I=G[k].begin();I<G[k].end();I++)
if(v[*I]==0)
{
Q.push(*I);
v[*I]=1;
d[*I]=d[k]+1;
}
Q.pop();
}
}