Pagini recente » Cod sursa (job #2818339) | Cod sursa (job #827230) | Cod sursa (job #1217634) | Cod sursa (job #818494) | Cod sursa (job #905932)
Cod sursa(job #905932)
#include<fstream>
#include<vector>
#include<queue>
#include<bitset>
#include<cstring>
#define NN 100009
#define pb push_back
#define INF 0x3f3f3f3f
const char iname[]="bfs.in";
const char oname[]="bfs.out";
using namespace std;
ofstream out(oname);
int n , d[NN] , m , S;
bitset< NN > uz;
queue<int>Q;
vector<int >G[NN];
typedef vector < int >:: iterator IT;
void read();
void BFS( int );
void write_sol();
int main()
{
read();
BFS(S);
write_sol();
return 0;
}
void read()
{
ifstream in(iname);
in >> n >> m >> S;
for ( int x,y ; m ;--m)
{
in >> x >> y;
G[x].pb(y);
// G[y].pb(x);
}
}
void BFS(int start)
{
memset(d,INF,sizeof(d));
Q.push(start);
d[start] = 0;
uz[start] = 1;
while(!Q.empty() )
{
int k = Q.front();
for ( IT I= G[k].begin(); I!=G[k].end(); ++I )
if ( !uz[ *I ] )
{
uz[*I] = 1;
d[*I] = d[k]+1;
Q.push( *I );
}
Q.pop();
}
}
void write_sol()
{
for( int i=1 ; i<=n ;i++)
out << ( d[i] == INF ? -1 : d[i] ) << " ";
}