Pagini recente » Cod sursa (job #3193072) | Statistici Titus-Teodor Pirsan (Titus_Teodor_Pirsan) | Cod sursa (job #1745845) | Cod sursa (job #2610050) | Cod sursa (job #1249469)
#include <fstream>
#include <vector>
#include <list>
#define NMAX 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> G[NMAX];
list<int> coada;
list <int>:: iterator it;
int N,M,dist[NMAX],S;
bool viz[NMAX];
void bfs()
{
int nod,i;
while(!coada.empty())
{
nod=coada.front();
for(i=0;i<G[nod].size();i++)
if(!dist[G[nod][i]] && G[nod][i]!=S)
{
dist[G[nod][i]]=dist[nod]+1;
coada.push_back(G[nod][i]);
}
coada.pop_front();
}
}
int main()
{
f>>N>>M>>S;
int i,x,y;
for(i=1;i<=M;i++)
{
f>>x>>y;
G[x].push_back(y);
}
dist[S]=0;
coada.push_back(S);
bfs();
for(i=1;i<=N;i++)
{
if(!dist[i])
{
if(i==S) g<<0<<' ';
else g<<-1<<' ';
}
else g<<dist[i]<<' ';
}
}