Pagini recente » Cod sursa (job #2522605) | Cod sursa (job #1445237) | Cod sursa (job #2777864) | Cod sursa (job #952567) | Cod sursa (job #669082)
Cod sursa(job #669082)
#include <iostream>
#include <fstream>
#define maxn 20000
#define maxm 1000005
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,MA[maxn][maxn],coada[maxn],viz[maxn],i,j,s,cost[maxn];
void citire_init()
{
int x,y;
f>>n; f>>m; f>>s;
for(i=1; i<=n ;i++)
{
MA[i][i]=0;
}
for(i=1; i<n ;i++)
{
for(j=i+1; j<=n ;j++)
{
MA[i][j]=MA[j][i]=0;
}
}
for(i=1; i<=m ;i++)
{
f>>x;
f>>y;
MA[x][y]=1;
}
for(i=1; i<=n ;i++)
{
coada[i]=0;
viz[i]=0;
cost[i]=-1;
}
coada[1]=s;
viz[s]=1;
cost[s]=0;
}
void BFS()
{
int z,k,pi,ps;
pi=1;
ps=1;
while(ps<=pi)
{
z=coada[ps];
for(k=1; k<=n ;k++)
{
if(MA[z][k]!=0 && !viz[k])
{
cost[k]=cost[z]+1;
pi++;
coada[pi]=k;
viz[k]=1;
}
}
ps++;
}
}
int main()
{
citire_init();
BFS();
for(int i=1; i<=n ;i++)
{
g<<cost[i]<<" ";
}
return 0;
}