Cod sursa(job #1784155)

Utilizator Emil64Emil Centiu Emil64 Data 19 octombrie 2016 20:22:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#define _nu __null
#include <queue>
#include <vector>
#include <string.h>

using namespace std;

std::queue<int> c;
std::vector<int> v[100001];
int sol[100001];
bool vis[100001]= {0};

int main()
{
    int i, j, n, m, np, a, b, pasi, nod, lg;
    ifstream f("bfs.in");
    ofstream g("bfs.out");

    f>>n>>m>>np;

    for(i=1; i<=m; i++)
    {
        f>>a>>b;
        v[a].push_back(b);
    }
    c.push(np);
    memset(sol, -1, sizeof(sol));
    sol[np]=0;
    vis[np]=true;
    pasi=0;
    while(!c.empty())
    {

        nod=c.front();
        c.pop();
        lg=v[nod].size();
        for(i=0; i<lg; i++)
        {
            if(vis[v[nod][i]]==0)
            {
                c.push(v[nod][i]);
                sol[v[nod][i]]=sol[nod]+1;
                vis[v[nod][i]]=true;
            }
        }
    }
    for(i=1; i<=n; i++)
        g<<sol[i]<<" ";
}