Pagini recente » Cod sursa (job #544211) | Cod sursa (job #266077) | Cod sursa (job #2782282) | Cod sursa (job #618039) | Cod sursa (job #1823095)
#include <iostream>
#include <fstream>
#include <queue>
#define N 100010
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
queue<int> coada;
int i,j,n,m,k,freq[N],el,viz[N],cost[N];
int** a;
void bfs(int x)
{
viz[x]=1;
cost[x]=0;
coada.push(x);
while(!coada.empty())
{
el=coada.front();
coada.pop();
for(i=1;i<=n;i++)
if(a[el][i]==1 && viz[i]==0)
{
cost[i]=cost[el]+1;
viz[i]=1;
coada.push(i);
}
}
}
int main()
{
int x1,y1;
f>>n>>m>>k;
a=new int*[n+5];
for(i=1;i<=n;i++)
{
a[i]=new int[n+5];
}
for(i=1;i<=m;i++)
{
f>>x1>>y1;
a[x1][y1]=1;
}
bfs(k);
for(i=1;i<=n;i++)
{
if(cost[i]==0 && i!=k)
g<<-1<<" ";
else
g<<cost[i]<<" ";
}
}