Pagini recente » Cod sursa (job #2731736) | Cod sursa (job #1920836) | Cod sursa (job #2419738) | Cod sursa (job #1419419) | Cod sursa (job #1710775)
#include<iostream>
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
queue <int> bfs;
int sol[100000];
queue <int> q;
vector <int> g[100000];
bool v[100000];
void BFS(int x)
{
int z,i;
v[x]=true;
bfs.push(x);
q.push(x);
while(!q.empty())
{
z = q.front();
q.pop();
for(i=0;i<g[z].size();i++)
{
if(!v[g[z][i]])
{
bfs.push(g[z][i]);
q.push(g[z][i]);
v[g[z][i]] = true;
sol[g[z][i]] = sol[z] + 1;
}
}
}
}
int main()
{
int n,m,s;
int a,b;
fstream f("bfs.in",ios::in);
f>>n>>m>>s;
while(f>>a>>b)
g[a].push_back(b);
f.close();
BFS(s);
fstream g("bfs.out",ios::out);
for(int i=1;i<=n;i++)
if(i!=s)
if(sol[i]!=0)
g<<sol[i]<<" ";
else
g<<-1<<" ";
else
g<<0<<" ";
}