Pagini recente » Cod sursa (job #235076) | Cod sursa (job #1291457) | Cod sursa (job #2655745) | Cod sursa (job #1774652) | Cod sursa (job #971238)
Cod sursa(job #971238)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int a[2500][25000];
int q[2500],l[2500],t[2500];
int p,ult,x,n;
bool sel[2500];
ifstream IN("bfs.in");
ofstream OUT("bfs.out");
void bf(int nod)
{
memset(sel,false,sizeof(sel));
memset(l,-1,sizeof(l));
int i;
p=ult=1;
t[nod]=l[nod]=0;
sel[nod]=true;
q[ult]=nod;
while(p<=ult)
{x=q[p];
for(i=1;i<=n;i++)
{
if(!sel[i] && a[x][i]==1)
{
q[++ult]=i;
sel[i]=true;
l[i]=l[x]+1;
t[i]=x;
}
}
p++;
}
}
int main()
{
int i,x1,x2,y,m;
IN>>n>>m>>x2;
memset(a,0,sizeof(a));
for(i=1;i<=m;i++) {IN>>x1>>y; a[x1][y]=1;}
bf(x2);
for(i=1;i<=n;i++) OUT<<l[i]<<" ";
return 0;
}