Cod sursa(job #1646087)

Utilizator sabauandrei98Sabau Andrei sabauandrei98 Data 10 martie 2016 15:00:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <iostream>
#include <limits.h>
#include <cmath>
#include <string>
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <stack>
#include <map>
#include <fstream>
#include <list>
#include <queue>
#include <iomanip>
#include <deque>
#include <set>

using namespace std;

#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define PI 3.14159265
#define nmax 100005
#define inf (1<<30)

ifstream f("bfs.in");
ofstream g("bfs.out");

int n,m,seen[nmax];
int dist[nmax];
vector<int> v[nmax];
queue<int> q;

void BFS(int nod)
{

    for(int i = 1; i <= n; i++)
        dist[i] = -1;

    dist[nod] = 0;
    seen[nod] = 1;

    q.push(nod);

    while(!q.empty())
    {
        int n = q.front();
        q.pop();

        for(int i = 0; i < v[n].size(); i++)
            if(!seen[v[n][i]])
            {
                dist[v[n][i]] = dist[n] + 1;
                seen[v[n][i]] = 1;
                q.push(v[n][i]);
            }
    }
}

int main()
{
    int nod;
    f >> n >> m >> nod;

    for(int i = 1; i <= m; i++)
        {
            int x,y,z;
            f >> x >> y;
            v[x].pb(y);
        }

    BFS(nod);

    for(int i = 1; i <= n; i++)
        g<<dist[i]<<" ";

}