Pagini recente » Cod sursa (job #955639) | Cod sursa (job #1559579) | Cod sursa (job #1495026) | Cod sursa (job #2822671) | Cod sursa (job #2567641)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
queue< int >q;
vector< int >A[ 100005 ];
vector< int >:: iterator itt;
int C[ 100005 ], i, N, M, start, nodc, nodn, x, y;
void BFS( int nod )
{
for( i = 1; i <= N; i++ )
{
C[ i ] = -1;
}
C[ nod ] = 0;
q.push( nod );
while( q.size() )
{
nodc = q.front();
for ( auto it:A[ nodc ] )
{
nodn = it;
if ( C[ nodn ] == -1 )
{
q.push( nodn );
C[ nodn ] = C[ nodc ] + 1;
}
}
q.pop();
}
}
int main()
{
fin >> N >> M >> start;
for ( i = 1; i <= M; i++ )
{
fin >> x >> y;
A[ x ].push_back( y );
}
BFS( start );
for ( i = 1; i <= N; i++ )
{
fout<< C[ i ] << ' ';
}
/*fout<< '\n';
for( itt = A[ 2 ].begin(); itt < A[ 2 ].end(); itt++ )
{
fout<< *itt << ' ';
}*/
}