Pagini recente » Cod sursa (job #676956) | Borderou de evaluare (job #1034404) | Cod sursa (job #879971)
Cod sursa(job #879971)
#include<fstream>
#include<vector>
#include<queue>
#define dmax 1000003
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int n, m, s, d[dmax], color[dmax];
vector<int>v[dmax];
vector<int>::iterator it;
queue<int>q;
void bfs(int st)
{
q.push(st);
d[st] = 0;
while(!q.empty() )
{
int hd = q.front();
q.pop();
color[hd] = 2;
for(it = v[hd].begin(); it < v[hd].end(); it++)
{
if(d[*it] == -1)
{
q.push(*it);
d[*it] = d[hd] + 1;
color[*it] = 1;
}
}
}
}
int main()
{
in>>n>>m>>s;
for(int i=0; i<m; i++)
{
int v1, v2;
in>>v1>>v2;
v[v1].push_back(v2);
}
in.close();
for(int i=1; i<=n; i++)
d[i] = -1;
bfs(s);
for(int i=1; i<=n; i++)
out<<d[i]<<" ";
out.close();
return 0;
}