Pagini recente » Cod sursa (job #2249064) | Cod sursa (job #573284) | Cod sursa (job #2164119) | Cod sursa (job #2038251) | Cod sursa (job #2790920)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector< vector <int>> edges;
vector <int> dist;
queue <int> q;
int n,m,root;
void readgraph()
{
cin>>n>>m>>root;
edges.resize(n);
dist.resize(n,-1);
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
a--;
b--;
edges[a].push_back(b);
}
}
//void dfs(int node)
//{
// viz[node]=1;
// for(auto next: edges[node])
// if(!viz[next])
// dfs(next);
//}
void bfs(int root)
{
q.push(root);
dist[root]=0;
while(!q.empty())
{
int i=q.front();
for(auto next : edges[i])
if(dist[next]==-1)
{
dist[next]=dist[i]+1;
q.push(next);
}
q.pop();
}
}
int main()
{
readgraph();
bfs(root-1);
for(int i=0;i<edges.size();i++)
cout<<dist[i]<<" ";
return 0;
}