Pagini recente » Monitorul de evaluare | Cod sursa (job #2895514) | Diferente pentru warm-up-2019/solutii/shoturi intre reviziile 48 si 47 | Istoria paginii utilizator/ilinca.a | Cod sursa (job #492037)
Cod sursa(job #492037)
#include <iostream>
#include <stdio.h>
#include <queue>
#include <list>
#define MAXN 100001
using namespace std;
typedef list<int> nod;
nod graf[MAXN];
int rez[MAXN];
int n,m,s,i,a,b,poz,aux;
queue<int> q;
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();
while (!graf[a].empty()) {
if (rez[graf[a].front()]==-1) {
aux=graf[a].front();
q.push(aux);
rez[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;
}