Pagini recente » Cod sursa (job #2365666) | Cod sursa (job #2299737) | Cod sursa (job #3125375) | Cod sursa (job #2162736) | Cod sursa (job #767696)
Cod sursa(job #767696)
#include <fstream>
#include <vector>
#include <queue>
#define maxn 100010
using namespace std;
int N,M,S;
int Viz[maxn],Cost[maxn];
queue <int> Q;
vector <int> V[maxn];
void BFS(int nod){
Q.push(nod);
Viz[nod]=1;
while(!Q.empty()){
nod=Q.front();
Q.pop();
for(vector<int>::iterator it=V[nod].begin();it!=V[nod].end();++it)
if(Viz[*it]==-1){
Q.push(*it);
Viz[*it]=1;
Cost[*it]=Cost[nod]+1;
}
}
}
int main(){
ifstream f("bfs.in");
ofstream g("bfs.out");
int x,y;
f>>N>>M>>S;
for(int i=1;i<=M;i++){
f>>x>>y;
V[x].push_back(y);
Viz[i]=-1;
}
BFS(S);
for(int i=1;i<=N;i++)
if(Cost[i]==0&&i!=S)
g<<-1<<' ';
else
g<<Cost[i]<<' ';
g<<'\n';
g.close();
return 0;
}