Pagini recente » Cod sursa (job #3171491) | Cod sursa (job #1476514) | Cod sursa (job #533076) | Cod sursa (job #2563345) | Cod sursa (job #1338863)
#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],color[100000];
int n,m,s,x,y,i,u;
in>>n>>m>>s;
for(i=0;i<n;i++)
if ((i-(s-1))!=0)
{
color[i]=1;
d[i] = 0;
}
else
{
color[s-1] = 2;
d[s-1]=0;
}
q.push(s-1);
color[s-1]=2;
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 (color[v[u][i]]==1)
{
color[v[u][i]] = 2;
d[v[u][i]] = d[u]+1;
q.push(v[u][i]);
}
q.pop();
color[u] = 3;
}
for(i=0;i<n;i++)
if (d[i]==0 && i!=(s-1))
out<<"-1 ";
else
out<<d[i]<<" ";
}