Pagini recente » Cod sursa (job #2195863) | Cod sursa (job #913545) | Cod sursa (job #87006) | Cod sursa (job #1009500) | Cod sursa (job #2875960)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int M=100010;
int n,m,S;
vector<int>graf[M];
queue<int>qu;
int v_dista[M];
void dist()
{
qu.push(S);
v_dista[S]=1;
while(!qu.empty())
{
int pos=qu.front();
qu.pop();
for(int i=0;i<graf[pos].size();i++)
{
if(v_dista[graf[pos][i]]==0)
{
v_dista[graf[pos][i]]=v_dista[pos]+1;
qu.push(graf[pos][i]);
}
}
}
}
int main()
{
ifstream in("bfs.in");
ofstream out("bfs.out");
in>>n>>m>>S;
for(int i=1;i<=m;i++)
{
int x,y;
in>>x>>y;
graf[x].push_back(y);
}
dist();
for(int i=1;i<=n;i++)
{
if(dist[i]>=0)
out<<v_dista[i]-1<<' ';
}
in.close();
out.close();
return 0;
}