Pagini recente » Cod sursa (job #2562180) | Cod sursa (job #196291) | Cod sursa (job #512513) | Cod sursa (job #1042035) | Cod sursa (job #3296183)
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
#define ll int
ll q[100005];
const int siz = 100005;
ll nrelemente = 0;
ll cntcurent = 0;
ll dist[100005];
bitset<siz> vis;
vector<vector<ll>> a(100005);
void bfs(ll nod)
{
nrelemente++;
q[nrelemente] = nod;
vis[nod] = 1;
ll t, i;
while(cntcurent < nrelemente)
{
cntcurent++;
t = q[cntcurent];
for(i = 0; i < a[t].size(); i++)
{
if(vis[a[t][i]] == 0)
q[++nrelemente] = a[t][i], dist[a[t][i]] = dist[t] + 1;
vis[a[t][i]] = 1;
}
}
}
int main()
{
ll n, m, x, y, s;
cin>>n>>m>>s;
for(int i = 1; i <= m; i++)
{
cin>>x>>y;
a[x].push_back(y);
}
bfs(s);
for(int i = 1; i <= n; i++)
{
if(vis[i] == 0)
cout<<"-1"<<" ";
else
cout<<dist[i]<<" ";
}
return 0;
}