Pagini recente » Istoria paginii runda/contest1/clasament | Cod sursa (job #2105718) | Statistici Rachita Razvan (razvan_rachita) | Cod sursa (job #2051489) | Cod sursa (job #804766)
Cod sursa(job #804766)
#include <fstream>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
struct coada {
int inf;
int tata;
coada *next;
};
int main()
{
int m,n,x,a,b,i,j,ad[100][100],viz[100],cost[100];
fin>>n>>m>>x;
for (i=0;i<=n;i++)
{
cost[i]=0;
viz[i]=0;
}
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
ad[i][j]=0;
for ( i=0;i<m;i++)
{
fin>>a>>b;
ad[a][b]=1;
}
/*
for(i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
fout<<ad[i][j];
fout<<"\n";
}
*/
coada *sir,*ultim,*aux;
sir=new coada;
sir->inf=x;
sir->next=NULL;
sir->tata=0;
ultim=sir;
viz[x]=1;
cost[0]=-1;
//last=0;
while ( sir )
{
//fout<<sir->inf<<" ";
cost[sir->inf]=cost[sir->tata]+1;
for (i=1;i<=n;i++)
{
if ( ad[sir->inf][i] && !viz[i] )
{
aux= new coada;
ultim->next=aux;
aux->inf=i;
aux->tata=sir->inf;
aux->next=NULL;
ultim=aux;
}
}
viz[sir->inf]=1;
sir=sir->next;
}
for (i=1;i<=n;i++)
if ( i!=x )
if (cost[i])
fout<<cost[i]<<" ";
else
fout<<-1<<" ";
else
fout<<0<<" ";
return 0;
}