Pagini recente » Cod sursa (job #2069609) | Cod sursa (job #1278190) | Cod sursa (job #2801727) | Cod sursa (job #766777) | Cod sursa (job #674004)
Cod sursa(job #674004)
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int a[20][20],n,m,c[100],viz[100],li=1,ls=0,start,d[100];
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;
}