Pagini recente » Cod sursa (job #2710009) | Cod sursa (job #2285358) | Cod sursa (job #902391) | Cod sursa (job #2721684) | Cod sursa (job #674007)
Cod sursa(job #674007)
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int a[2500][2500],n,m,c[2500],viz[2500],li=1,ls=0,start,d[2500];
void citire() {
fin>>n>>m;
fin>>start;
for(int i=1;i<=m;i++) {
int x,y;
fin>>x>>y;
a[x][y]=1;
}
}
int vid() {
if(li>ls) return 1;
else return 0;
}
void pune(int x) {
ls++;
c[ls]=x;
}
void scoate(int &x) {
x=c[li];
li++;
}
void bf(int i) {
pune(i);
viz[i]=1;
while(!vid()) {
int x;
scoate(x);
for(int k=1;k<=n;k++)
if(a[x][k]==1&&viz[k]==0) {
viz[k]=1;
pune(k);
d[k]=d[x]+1;
}
}
}
int main() {
citire();
bf(start);
for(int i=1;i<=n;i++) {
if(d[i]==0&&i!=start) d[i]=-1;
fout<<d[i]<<" ";
}
return 0;
}