Cod sursa(job #1115792)

Utilizator vlad.rusu11Rusu Vlad vlad.rusu11 Data 22 februarie 2014 01:12:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#define NMax 100001
using namespace std;

struct NOD  {
                int key;
                NOD *next;
            };

NOD *start[NMax];
bool vis[NMax];

int main()
{
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");

    int n, m, i, j, s, c, dist[NMax], queue[NMax];
    NOD *p;

    fin >> n >> m >> s;

    for(c=1 ; c<=m ; ++c)
    {
        fin >> i >> j;

        p = new NOD;
        p->key = j;
        p->next = start[i];
        start[i] = p;
    }
    fin.close();

    vis[s] = true;
    queue[1] = s;
    i = j = 1;
    while(i <= j)
    {
        p = start[queue[i]];
        while(p)
        {
            if(! vis[p->key])
            {
                vis[p->key] = true;
                queue[++j] = p->key;
                dist[p->key] = dist[queue[i]] + 1;
            }
            p = p->next;
        }
        ++i;
    }

    for(i=1 ; i<=n ; ++i)
        fout << (vis[i] ? dist[i] : -1) << ' ';

    fout.close();
    return 0;
}