Pagini recente » Cod sursa (job #1258552) | simulare_oni_hlo_mediu | Cod sursa (job #3204646) | Cod sursa (job #2477036) | Cod sursa (job #2023051)
#include <bits/stdc++.h>
#define N 100005
using namespace std;
FILE * f= fopen("bfs.in","r");
FILE * g= fopen("bfs.out","w");
vector <int> G[N];
bool vizitat[N];
int distanta[N],n,m,sursa;
queue<int> q;
int main()
{
int i;
fscanf(f,"%d%d%d",&n,&m,&sursa);
for(i=1; i<=m; i++)
{
int x,y;
fscanf(f,"%d%d",&x,&y);
G[x].push_back(y);
}
q.push(sursa);
vizitat[sursa]=1;
while(!q.empty())
{
int p=q.front();
q.pop();
for(auto it:G[p])
if(!vizitat[it])
{
vizitat[p]=1;
distanta[it]=distanta[p]+1;
q.push(it);
}
}
for(i=1; i<=n; i++)
if(distanta[i]==0&&i!=sursa)
fprintf(g,"-1 ");
else
fprintf(g,"%d ",distanta[i]);
}