Pagini recente » Cod sursa (job #2834751) | Cod sursa (job #2057234) | Cod sursa (job #1864546) | Cod sursa (job #667099) | Cod sursa (job #272614)
Cod sursa(job #272614)
#include <stdio.h>
#define max 100111
typedef struct nod {int inf; nod *urm;};
nod *v[max];
int n,m,s,r[max],cp,cu,c[max];
int i;
void rezolva () {
for (i=1; i<=n; i++)
{
r[i] = -1;
}
nod *p;
int cp = cu = 0;
c[0] = s;
r[s] = 0;
while (cp<=cu) {
for (p = v[c[cp]]; p!=NULL; p = p->urm) {
if (r[p->inf] == -1) {
cu++;
c[cu] = p->inf;
r[p->inf] = r[c[cp]]+1;
}
}
cp++;
}
}
void add (int x, int y) {
nod *p;
p = new nod;
p->inf = y;
p->urm = v[x];
v[x] = p;
}
void citeste () {
int x,y;
FILE * in = fopen("bfs.in", "r");
fscanf(in, "%d %d %d", &n, &m, &s);
for (i=0; i<m; i++) {
fscanf(in, "%d %d", &x, &y);
add(x,y);
}
fclose(in);
}
void scrie () {
FILE * out = fopen("bfs.out", "w");
for (i=1; i<=n; i++) {
fprintf(out, "%d ", r[i]);
}
fclose(out);
}
int main () {
citeste();
rezolva();
scrie();
return 0;
}