Pagini recente » Cod sursa (job #1511065) | Cod sursa (job #1511109) | Cod sursa (job #2933824) | Atasamentele paginii haicatrebuiesatrebuiasca | Cod sursa (job #2380038)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define MAX 100005
using namespace std;
int viz[MAX];
int dist[MAX];
vector <int> graph[MAX];
queue <int> myqueue;
void bfs(int sursa)
{
myqueue.push(sursa);
viz[sursa]=1;
dist[sursa]=0;
while(!myqueue.empty())
{
int index=myqueue.front();
myqueue.pop();
int lim=graph[index].size();
for(int i=0;i<lim;i++)
{
int vecin=graph[index][i];
if(!viz[vecin])
{
dist[vecin]=dist[index]+1;
myqueue.push(vecin);
viz[vecin]=1;
}
}
}
}
int main()
{
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int varfuri,arce,sursa;
fin>>varfuri;
fin>>arce;
fin>>sursa;
int x,y;
for(int i=1;i<=arce;i++)
{
fin>>x;
fin>>y;
graph[x].push_back(y);
}
for(int i=1;i<=varfuri;i++)
{
dist[i]=-1;
}
bfs(sursa);
for(int i=1;i<=varfuri;i++)
fout<<dist[i]<<" ";
}