Cod sursa(job #1267482)

Utilizator radarobertRada Robert Gabriel radarobert Data 19 noiembrie 2014 22:48:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <cstdio>
#include <vector>
#include <queue>

using namespace std;

vector<int> g[100001];
queue<int> q;
int vis[100001];

int main()
{
    FILE *in = fopen("bfs.in", "r");
    FILE *out = fopen("bfs.out", "w");

    int n, m, s;
    fscanf(in, "%d%d%d", &n, &m, &s);

    int x, y;
    for (; m >= 0; --m)
    {
        fscanf(in, "%d%d", &x, &y);
        g[x].push_back(y);
    }

    for (int i = 1; i <= n; ++i)
        vis[i] = -1;
    q.push(s);
    vis[s] = 0;
    while (!q.empty())
    {
        x = q.front();
        q.pop();
        for (int i = 0; i < g[x].size(); ++i)
        {
            y = g[x][i];
            if (vis[y] == -1)
            {
                vis[y] = vis[x]+1;
                q.push(y);
            }
        }
    }
    fprintf(out, "%d", vis[1]);
    for (int i = 2; i <= n; ++i)
        fprintf(out, " %d", vis[i]);
    fprintf(out, "\n");

    return 0;
}