Pagini recente » infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #3289002) | Cod sursa (job #3154830) | Cod sursa (job #3274829) | Cod sursa (job #662618)
Cod sursa(job #662618)
#include<fstream>
#include<algorithm>
#include<vector>
#include<queue>
#define Inf 100001
using namespace std;
int n, m, i, j, start, x, y, viz[100001];
vector<int> v[100001];
vector<int> d(100001, Inf);
queue<int> C;
void bfs()
{
C.push(start);
d[start]=0;
viz[start]=1;
while(!C.empty())
{
x=C.back();
C.pop();
for(i=0;i<v[x].size();i++)
if(!viz[v[x][i]])
{
viz[v[x][i]]=1;
d[v[x][i]]=d[x]+1;
C.push(v[x][i]);
}
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d%d%d", &n, &m, &start);
for(i=1;i<=m;i++)
{
scanf("%d%d", &x, &y);
v[x].push_back(y);
}
bfs();
for(i=1;i<=n;i++)
if(d[i]!=Inf)
printf("%d ", d[i]);
else
printf("-1 ");
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}