Pagini recente » Cod sursa (job #1809573) | Cod sursa (job #1606353) | Cod sursa (job #1648272) | Cod sursa (job #2977495) | Cod sursa (job #1074465)
#include <fstream>
#include <vector>
#include <queue>
#define INF 1000101
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,S;
int c[100011];
int D[100011];
bool viz[100011];
vector<int> L[100011];
int main(void){
register int i,j,x,y,nod;
f>>n>>m>>S;
for(i=1;i<=m;i++){
f>>x>>y;
L[x].push_back(y);
}
for(i=1;i<=n;i++)
D[i]=INF;
int p,u;
p=u=1,c[1]=S;
D[S]=0;
while(p<=u){
for(i=0;i<L[c[p]].size();i++){
nod=L[c[p]][i];
if(!viz[nod])
if(D[nod]>D[c[p]]+1)
D[nod]=D[c[p]]+1,c[++u]=nod,viz[nod]=true;
}
p++;
}
for(i=1;i<=n;i++){
D[i]=(D[i]==INF?-1:D[i]);
g<<D[i]<<" ";
}
f.close();
g.close();
return 0;
}