Cod sursa(job #1909416)

Utilizator Catalin121Catalin Sumanaru Catalin121 Data 7 martie 2017 12:40:18
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define N 100001

using namespace std;

vector<int> g[N];
int n;

void citire(int &src)
{
    int m;
    ifstream fin("bfs.in");
    fin >> n >> m >> src;
    for(int i=1; i<=m; i++)
    {
        int x,y;
        fin >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    fin.close();
}



void bfs(int src)
{
    int visited[N];
    for(int i=1; i<=n; i++)
        visited[i] = -1;
    visited[src] = 0;
    queue<int> q;
    q.push(src);

    while(!q.empty())
    {
        int x = q.front();
        q.pop();
        vector<int>::iterator i;
        for(i = g[x].begin(); i!=g[x].end(); ++i)
            if(visited[*i]==-1)
            {
                visited[*i] = visited[x]+1;
                q.push(*i);
            }
    }

    ofstream fout("bfs.out");
    for(int i=1; i<=n; i++)
        fout << visited[i] << " ";
    fout.close();
}


int main()
{
    int src;
    citire(src);
    bfs(src);
    return 0;
}