Pagini recente » Cod sursa (job #1114673) | Cod sursa (job #2685201) | Cod sursa (job #186030) | Cod sursa (job #353615) | Cod sursa (job #672683)
Cod sursa(job #672683)
#include<fstream>
#define INF 999999999
using namespace std;
ofstream out("bfs.out");
int a[2500][2500],uz[2500],d[2500],n,m,s,q[2500];
void citire();
void bfs(int start);
int main()
{
citire();
bfs(s);
for(int i=1;i<=n;i++)
if(d[i]==INF)
out<<-1<<" ";
else
out<<d[i]<<" ";
return 0;
}
void citire()
{
ifstream in("bfs.in");
in>>n>>m>>s;
int x,y;
for(;m;m--)
{
in>>x>>y;
a[x][y]=1;
}
}
void bfs(int start)
{
int st,dr,k;
st=dr=1;
for(int j=1;j<=n;j++)
{
d[j]=INF;
}
q[dr]=start;
d[start]=0;
uz[start]=1;
while(st<=dr)
{
k=q[st];
for(int i=1;i<=n;i++)
if(a[k][i]==1&&uz[i]==0)
{
++dr;
q[dr]=i;
uz[i]=1;
d[i]=d[k]+1;
}
++st;
}
}