Pagini recente » Cod sursa (job #2910655) | Cod sursa (job #309297) | Cod sursa (job #2383108) | Cod sursa (job #2241222) | Cod sursa (job #1641461)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> graf[100001];
int stnod[100001],stdist[100001],curr=1,k=1;
int dist[100001];
int main()
{ int n,m,s,x,y,i;
f>>n>>m>>s;
for(i=1;i<=n;i++) dist[i]=-1;
for(i=1;i<=m;i++)
{
f>>x>>y;
graf[x].push_back(y);
}
stnod[1]=s;
stdist[1]=0;
while(curr<=k)
{
dist[stnod[curr]]=stdist[curr];
for(i=0;i<graf[stnod[curr]].size();i++)
{
if(!(1+dist[graf[stnod[curr]][i]]))
{
k++;
stnod[k]=graf[stnod[curr]][i];
stdist[k]=stdist[curr]+1;
}
}
curr++;
}
for(i=1;i<=n;i++) g<<dist[i]<<" ";
g.close();
return 0;
}