Pagini recente » Cod sursa (job #1563106) | Atasamentele paginii teams2 | Cod sursa (job #1800271) | Atasamentele paginii teams2 | Cod sursa (job #1562160)
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>
using namespace std ;
ifstream f ("bfs.in") ;
ofstream g ("bfs.out") ;
bool vizitat[100005] ;
int distanta[100005] ;
queue <int> q ;
vector <int> G[100005] ;
int N , M , P ;
void bfs ( int nod )
{
vizitat[nod] = 1 ;
distanta[nod] = 0 ;
q.push ( nod ) ;
while ( !q.empty() )
{
int k = q.front() ;
for ( vector<int>::iterator I = G[k].begin() ; I < G[k].end() ; ++I )
if ( !vizitat[*I] )
{
distanta[*I] = distanta[k] + 1 ;
q.push ( *I ) ;
vizitat[*I] = 1 ;
}
q.pop () ;
}
}
void citire ()
{
f >> N >> M >> P ;
for ( int i = 1 ; i <= M ; ++i )
{
int x , y ;
f >> x >> y ;
G[x].push_back(y) ;
//G[y].push_back (x) ; //-neorientat
}
for ( int i = 1 ; i <= N ; ++i ) //initializam
distanta[i] = -1 ;
}
void afisare ()
{
for ( int i = 1 ; i <= N ; ++i )
g << distanta[i] << " " ;;
}
int main()
{
citire () ;
bfs ( P ) ;
afisare () ;
}