Pagini recente » Monitorul de evaluare | Diferente pentru utilizator/eudoaralberto intre reviziile 10 si 28 | Monitorul de evaluare | Diferente pentru utilizator/vlad3108 intre reviziile 31 si 30 | Cod sursa (job #492046)
Cod sursa(job #492046)
#include <iostream>
#include <stdio.h>
#include <queue>
#include <vector>
#define MAXN 100001
using namespace std;
typedef vector<int> nod;
nod graf[MAXN];
int rez[MAXN];
int n,m,s,i,a,b,poz,aux;
queue<int> q;
vector<int>::iterator it;
FILE *fin=fopen("bfs.in","r"), *fout=fopen("bfs.out","w");
void BFS() {
aux=s;
poz=0;
q.push(aux);
rez[s]=0;
while (!q.empty()) {
//cout<<q.front().val<<"\n";
a=q.front();
poz=rez[a]+1;
q.pop();
for(it=graf[a].begin();it!=graf[a].end();it++) {
if (rez[*it]==-1) {
q.push(*it);
rez[*it]=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_back(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;
}