Pagini recente » Cod sursa (job #394481) | Cod sursa (job #1448650) | Cod sursa (job #538645) | Cod sursa (job #1208651) | Cod sursa (job #1919475)
#include <iostream>
#include <fstream>
using namespace std;
int a[2300][2300],c[2300],viz[2300],d[2300],i,j,m,n,x,y,s,dr=1,st=1,inf=99999;
ofstream g("bfs.out");
void citire()
{
ifstream f("bfs.in");
f>>n>>m>>s;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
a[i][j]=inf;
for(i=1; i<=m; i++)
{
f>>x>>y;
a[x][y]=1;
}
}
void travlat(int s)
{
int ok=1;
c[1]=s;
viz[s]=1;
while(st<=dr)
{
for(i=1; i<=n; i++)
if(a[c[st]][i]==1 && viz[i]==0)
{
dr++;
c[dr]=i;
viz[i]=1;
d[dr]=1+d[st];
}
st++;
}
}
int main()
{
int k=0;
citire();
travlat(s);
for(i=1; i<dr; i++)
for(j=i+1; j<=dr; j++)
if(c[i]>c[j])
{
swap(d[i],d[j]);
swap(c[i],c[j]);
}
for(i=1; i<=n; i++)
if(viz[i]==1)
{
g<<d[i-k]<<" ";
k=0;
}
else
{
g<<-1<<" ";
k++;
}
}