Pagini recente » Cod sursa (job #1077070) | Cod sursa (job #8068) | Cod sursa (job #207434) | Cod sursa (job #2083060) | Cod sursa (job #1338876)
#include<fstream>
#include <algorithm>
#include <list>
#include <queue>
#include <vector>
#include <array>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
queue <int> q;
vector<int> v[100000];
int main()
{
int d[100000];
bool c[100000];
int n,m,s,x,y,i,u;
in>>n>>m>>s;
for(i=0;i<n;i++)
if ((i-(s-1))!=0)
d[i] = 0;
else
{
c[s-1] = 1;
d[s-1]=0;
}
q.push(s-1);
for(i=0;i<m;i++)
{
in>>x>>y;
v[x-1].push_back(y-1);
}
while(!q.empty())
{
u = q.front();
for( i=0;(int)i<(int)v[u].size();i++)
if (!c[v[u][i]])
{
c[v[u][i]] = 1;
d[v[u][i]] = d[u]+1;
q.push(v[u][i]);
}
q.pop();
c[u] = 1;
}
for(i=0;i<n;i++)
if (d[i]==0 && i!=(s-1))
out<<"-1 ";
else
out<<d[i]<<" ";
}