Pagini recente » Cod sursa (job #547264) | Cod sursa (job #2278451) | Cod sursa (job #2501542) | Cod sursa (job #660889) | Cod sursa (job #492015)
Cod sursa(job #492015)
#include <iostream>
#include <stdio.h>
#include <queue>
#include <list>
#define MAXN 100001
using namespace std;
typedef list<int> nod;
struct element {
int val;
int poz;
};
nod graf[MAXN];
int rez[MAXN];
int n,m,s,i,a,b;
element aux;
queue<element> q;
FILE *fin=fopen("bfs.in","r"), *fout=fopen("bfs.out","w");
void BFS() {
aux.val=s;
aux.poz=0;
q.push(aux);
while (!q.empty()) {
a=q.front().val;
aux.poz=q.front().poz+1;
q.pop();
while (!graf[a].empty()) {
if (rez[graf[a].front()]==-1) {
aux.val=graf[a].front();
q.push(aux);
rez[aux.val]=aux.poz;
}
graf[a].pop_front();
}
}
}
int main()
{
fscanf(fin,"%i %i %i",&n,&m,&s);
for(i=1;i<=m;i++) {
fscanf(fin,"%i %i",&a,&b);
graf[a].push_front(b);
}
for(i=1;i<=n;i++) rez[i]=-1;
BFS();
rez[s]=0;
for(i=1;i<=n;i++) {
fprintf(fout,"%i ",rez[i]);
}
fclose(fout);
return 0;
}