Pagini recente » Cod sursa (job #718923) | Cod sursa (job #1842007) | Cod sursa (job #685753) | Cod sursa (job #587202) | Cod sursa (job #3142197)
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005
#define pb push_back
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector<int> adj[NMAX];
bool vis[NMAX];
int n,m,x,y,cnt,cost[NMAX],s;
void dfs(int nod)
{
vis[nod] = 1;
for(int k=0; k < adj[nod].size(); k++)
{
if(!vis[adj[nod][k]])
vis[adj[nod][k]] = 1 , dfs(adj[nod][k]);
}
}
int main()
{
cin >> n >> m >> s;
for(int i=1; i <= m; i++)
{
cin >> x >> y;
adj[x].pb(y);
}
queue<int> Q;
Q.push(s);
vis[s] = 1;
cost[s] = 0;
while(!Q.empty())
{
int nod = Q.front();
for(int k=0; k < adj[nod].size(); k++)
{
if(!vis[adj[nod][k]])
{
Q.push(adj[nod][k]);
vis[adj[nod][k]] = 1;
cost[adj[nod][k]] = cost[nod] + 1;
}
}
Q.pop();
}
for(int i=1; i <= n; i++)
{
if(i == s)
cout << 0 << ' ';
else if(!cost[i])
cout << -1 << ' ';
else
cout << cost[i] << ' ';
}
return 0;
}