Pagini recente » Cod sursa (job #839343) | Cod sursa (job #2207370) | Cod sursa (job #2683446) | Cod sursa (job #1339874) | Cod sursa (job #630462)
Cod sursa(job #630462)
#include <stdio.h>
#include <deque>
#include <vector>
#define maxn 100001
using namespace std;
int n, m, s, cost[maxn];
deque<int> coada;
vector<int> vecini[maxn];
void citire()
{
int a,b;
scanf("%d %d %d ",&n,&m,&s);
for (int i=1;i<=m;i++)
{
scanf("%d %d ", &a, &b);
//vecini[a][++vecini[a][0]]=b;
vecini[a].push_back(b);
vecini[b].push_back(a);
}
}
void BFS(int node)
{
for(int i=0;i<=maxn;i++)
cost[i]=-1;
cost[node]=0;
coada.push_front(node);
for (deque<int>::iterator cd=coada.begin(); cd!=coada.end();cd++)
for(vector<int>::iterator vec=vecini[*cd].begin();vec!=vecini[*cd].end();vec++)
//for(int j=1; j<=vecini[coada[i]][0];j++)
if (cost[*vec]<0)
{
coada.push_front(*vec);
cost[*vec]=cost[*cd]+1;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
BFS(s);
for (int i=1;i<=n;i++)
printf("%d ", cost[i]);
return 0;
}