Pagini recente » Cod sursa (job #2291375) | Cod sursa (job #2840474) | Cod sursa (job #1444801) | Cod sursa (job #9195) | Cod sursa (job #600175)
Cod sursa(job #600175)
#include <iostream>
#include <fstream>
#include <stdio.h>
#define nmax 100001
using namespace std;
int n,m,s;
int a[nmax][100];
int p1[nmax];
void bfs(int x){
int p, u, q[nmax];
bool viz[nmax];
for(int i=1;i<=n;++i) viz[i] = 0;
p=u=1;
q[p] = s;
viz[s] = 1;
while(p<=u){
x=q[p++];
for(int i=1;i<=a[x][0];++i)
if(!viz[a[x][i]]){
q[++u] = a[x][i];
viz[a[x][i]] = 1;
p1[a[x][i]]=1+p1[x];
}
}
}
int main()
{
int x, y;
ifstream in("bfs.in");
in >> n >> m >> s;
for(int i=1;i<=m && in >> x >> y;++i){
++a[x][0];
a[x][a[x][0]] = y;
}
in.close();
bfs(s);
ofstream out("bfs.out");
for(int i=1;i<=n;++i)
if(p1[i] == 0 && i != s) out << -1 << " ";
else out << p1[i] << " ";
out.close();
return 0;
}