Pagini recente » Rezultatele filtrării | Cod sursa (job #2915096) | Cod sursa (job #2722619) | Rezultatele filtrării | Cod sursa (job #1436298)
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
#define NMAX 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> G[NMAX];
queue <int> Q;
bitset <NMAX> viz;
int cost [NMAX];
void BFS(int nod)
{
while(!Q.empty())
{
nod=Q.front();
for(unsigned int i=0; i<G[nod].size(); i++)
{
if(viz[G[nod][i]]==0)
{
cost[G[nod][i]]=cost[nod]+1;
Q.push(G[nod][i]);
viz[G[nod][i]]=1;
}
}
Q.pop();
}
}
int main()
{
int i,N,M,S,x,y;
f>>N>>M>>S;
for(i=1; i<=M; i++)
{
f>>x>>y;
G[x].push_back(y);
}
Q.push(S);
viz[S]=1;
cost[S]=0;
BFS(S);
for(i=1; i<=N; i++)
if(viz[i]==1)
g<<cost[i]<<" ";
else
g<<-1<<" ";
return 0;
}