Pagini recente » Cod sursa (job #2171065) | Cod sursa (job #3212524) | Cod sursa (job #3235849) | Cod sursa (job #1626695) | Cod sursa (job #2461328)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
int t[3][50003],i,j,n,m,s,k,start[100003],sol[100003],cost[100003],p,u,coada[100003],element,fr[100003];
bool a[103][103];
int main()
{
f>>n>>m>>s;
while(m!=0)
{
f>>i>>j;
if(i!=j)
if(a[i][j]==0)
{
k++;
t[0][k]=j;
t[1][k]=start[i];
start[i]=k;
a[i][j]=1;
}
m--;
}
p=1,u=1,coada[p]=s;
fr[coada[p]]=1;
while(p<=u)
{
element=coada[p];
int nr=0;
int coloana=start[element];
while(coloana!=0)
{
sol[++nr]=t[0][coloana];
coloana=t[1][coloana];
}
for(i=1;i<=nr;i++)
{
if(fr[sol[i]]==0)
coada[++u]=sol[i],cost[sol[i]]=cost[coada[p]]+1,fr[sol[i]]=1;
}
p++;
}
for(i=1;i<=n;i++)
if(cost[i]!=0 || i==s)
g<<cost[i]<<" ";
else
g<<-1<<" ";
}