Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Atasamentele paginii simulare_oji_2004 | Diferente pentru runda/redsnow_3 intre reviziile 4 si 54 | Cod sursa (job #563670)
Cod sursa(job #563670)
#include <cstdio>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
#define N 100001
vector<vector<int> > v(N);
queue<int> q;
int n,m,start;
int a[N];
void bfs (int x){
a[x]=1;
for(q.push(x);!q.empty();q.pop()){
int y=q.front();
for(vector<int>::iterator it=v[y].begin();it<v[y].end();++it)
if(a[(*it)]==0){
a[(*it)]=a[y]+1;
q.push((*it));
}
}
}
int main ()
{
ifstream in ("bfs.in");
in>>n>>m>>start;
for(;m;--m){
int x,y;
in>>x>>y;
if(x!=y)
v[x].push_back(y);
}
bfs (start);
freopen ("bfs.out","w",stdout);
for(int i=1;i<=n;++i)
printf("%d ",a[i]-1);
printf("\n");
return 0;}