Pagini recente » Cod sursa (job #1216466) | Cod sursa (job #412975) | Cod sursa (job #2662574) | Cod sursa (job #532892) | Cod sursa (job #1307461)
#include <bits/stdc++.h>
using namespace std;
#define Nmax 100013
vector <int> G[Nmax];
int n,i,j,m,a,b,comp(0),source;
bool used[Nmax];
int D[Nmax];
void bfs(int node)
{
queue <int> Q;
Q.push(node);
D[node]=0;
used[node]=1;
while(!Q.empty())
{
int top=Q.front();
vector <int>::iterator it;
for (it=G[top].begin();it!=G[top].end();++it)
if (!used[*it])
{
used[*it]=1;
Q.push(*it);
D[*it]=D[top]+1;
}
Q.pop();
}
}
int main(void)
{
ifstream in("bfs.in");
ofstream out("bfs.out");
in>>n>>m>>source;
while(m--)
{
in>>a>>b;
G[a].push_back(b);
}
bfs(source);
for (i=1;i<=n;++i)
if(!used[i]) out<<"-1 ";
else out<<D[i]<<" ";
return 0;
}