Pagini recente » Diferente pentru problema/papuci intre reviziile 15 si 12 | Cod sursa (job #1946836) | Autentificare | Atasamentele paginii Profil catalina.antemir | Cod sursa (job #1710911)
#include<iostream>
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
ifstream f("bfs.in");
ofstream d("bfs.out");
queue <int> bfs;
int sol[100001];
queue <int> q;
vector <int> g[100001];
bool v[100001];
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;
f>>n>>m>>s;
while(f>>a>>b)
g[a].push_back(b);
f.close();
BFS(s);
for(int i=1;i<=n;i++)
if(i!=s)
if(sol[i]!=0)
d<<sol[i]<<" ";
else
d<<-1<<" ";
else
d<<0<<" ";
d.close();
}