Pagini recente » Cod sursa (job #2255320) | Cod sursa (job #1064643) | Cod sursa (job #1059087) | Cod sursa (job #435285) | Cod sursa (job #2853477)
#include<fstream>
#include<queue>
#include <vector>
#include <stdio.h>
using namespace std ;
int n,m,s ;
vector<vector<int>>arce(100005,vector<int>());
int G[100005], S[100005], Cost[100005];
void citire()
{
ifstream f("bfs.in");
f >> n >> m >>s ;
int x,y ;
for(int i = 0 ; i < m ; i++)
{
f >> x >> y ;
arce[x].push_back(y) ;
}
for(int i = 1 ; i <= n ; i++ )
G[i] = arce[i].size() ;
for(int i = 1 ; i <= n ; i++)
{
Cost[i] = -1 ;
}
}
void BFS()
{
int L= 1;
S[L] = s ;
Cost[s] = 0 ;
for(int i = 1 ; i <= L ; i++)
for(int j = 0 ; j < G[S[i]] ; j++)
if(Cost[arce[S[i]][j]] == -1 )
{
S[++L] = arce[S[i]][j] ;
Cost[S[L]] = Cost[S[i]] + 1;
}
}
int main()
{
ofstream g ("bfs.out");
citire() ;
BFS();
for(int i = 1 ; i <= n ; i++)
g << Cost[i] << " " ;
g.close();
return 0 ;
}