Pagini recente » Cod sursa (job #2538340) | Cod sursa (job #251687) | Cod sursa (job #1785118) | Cod sursa (job #2985325) | Cod sursa (job #1808316)
#include <cstdio>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
const int Nmax=100001;
vector<int>g[Nmax];
vector<int>viz; // componente conexe
vector<int>d;
int n;
void bfs( int nod, int cc )
{
queue<int>q;
int u,v,j;
viz[nod]=cc;
q.push(nod);
while( !q.empty() )
{
u=q.front();
q.pop();
for( j=0;j<g[u].size();j++ )
{
v=g[u][j];
if( !viz[v] )
{
viz[v]=cc;
d[v]=d[u]+1;
q.push(v);
}
}
}
}
int main()
{
freopen( "bfs.in", "r", stdin );
freopen( "bfs.out", "w", stdout );
int m, s, u, v, i;
scanf( "%d%d%d", &n, &m, &s );
for( i=1;i<=m;i++ )
{
scanf( "%d%d", &u, &v );
g[u].push_back(v);
}
viz.assign(n+1,0);
d.assign(n+1,0);
bfs(s,1);
for( i=1;i<=n;i++ )
if( viz[i]!=viz[s] )
printf( "-1 " );
else
printf( "%d ", d[i] );
return 0;
}