Pagini recente » Cod sursa (job #1125186) | Cod sursa (job #1320786) | Cod sursa (job #1089442) | Cod sursa (job #1467351) | Cod sursa (job #2424438)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int n, M, S, x, y;
vector <vector <int> > a;
vector <int> dist;
queue <int> q;
void BFS(int sursa)
{
dist[sursa] = 1;
q.push(sursa);
while(!q.empty())
{
int node = q.front();
for(unsigned int i = 0; i < a[node].size(); i ++)
{
int u = a[node][i];
if (dist[u] == 0)
{
dist[u] = dist[node] + 1;
q.push(u);
}
}
q.pop();
}
for(int i = 0; i < n; i++)
if(dist[i] > dist[sursa])
out << "0\n";
else
out << dist[i] << "\n";
}
void add_edge(int i, int j)
{
a[i].push_back(j);
a[j].push_back(i);
}
int main()
{
in>>n;
in>>M;
in>>S;
a = vector <vector<int> > (n+1);
for(int i = 0; i <= n; i++)
{
dist.push_back(0);
}
for(int i=0;i<M;i++){
in >> x >> y;
add_edge(x, y);
}
for(int i=0;i<n;i++)
BFS(i);
return 0;
}