Pagini recente » Cod sursa (job #2878612) | Cod sursa (job #2675934) | Cod sursa (job #1355202) | Cod sursa (job #658901) | Cod sursa (job #838617)
Cod sursa(job #838617)
#include<fstream>
#include<vector>
#define lmax 100002
using namespace std;
vector <int> v[lmax];
int parcurs[lmax];
int d[lmax];
int n,m,s;
ifstream f("bfs.in");
ofstream g("bfs.out");
void bfs(){
int i,aux;
int c1,c2;
int c[lmax];
c1=c2=1;
c[c2]=s;
parcurs[s]=1;
while(c1<=c2){
aux=c[c1++];
for(i=0;i<v[aux].size();i++)
if(parcurs[v[aux][i]]==0){
parcurs[v[aux][i]]=1;
d[v[aux][i]]=d[aux]+1;
c[++c2]=v[aux][i];
}
parcurs[aux]=1;
}
for(i=1;i<s;i++){
d[i]==0?g<<-1:g<<d[i];
g<<" ";}
g<<0<<" ";
while(i<n){i++;
d[i]==0?g<<-1:g<<d[i];
g<<" ";
}
}
int main(){
int i,a,b;
f>>n>>m>>s;
for(i=1;i<=m;i++){
f>>a>>b;
v[a].push_back(b);}
bfs();
f.close();
g.close();
}