Cod sursa(job #1242125)

Utilizator sperantaVio Alexa speranta Data 13 octombrie 2014 23:32:58
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

ifstream is("bfs.in");
ofstream os("bfs.out");

vector<vector<int>> G;
int n, m, t, z, x[100];
bool a[100];
queue<int> Q;

void BFS( int S );

int main()
{
    is >> n >> m;
    for ( int i = 1; i <= n; i++ )
        x[i] = -1;
    G.resize(n+1);
    for ( int i = 1; i <= m; i++ )
    {
        is >> t >> z;
        G[t].push_back(z);
        G[z].push_back(t);
    }

    BFS(1);

    for ( int i = 1; i <= n; i++ )
        os << x[i] << ' ';

    is.close();
    os.close();
    return 0;
}

void BFS( int S )
{
    Q.push(S);
    x[S] = 0;
    a[S] = true;
    int y;
    while ( !Q.empty() )
    {
        y = Q.front();
        Q.pop();
        for ( vector<int>::iterator it = G[y].begin(); it != G[y].end(); ++it )
            if ( a[*it] == false )
            {
                x[*it] = x[y] + 1;
                Q.push(*it);
                a[*it] = true;
            }
    }
}