Cod sursa(job #1043799)

Utilizator MarghescuGabriel Marghescu Marghescu Data 28 noiembrie 2013 22:39:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>
#include <queue>
 
using namespace std;
 
ifstream fin("bfs.in");
ofstream fout("bfs.out");
 
const int NMAX=100002;
vector <int> a[NMAX];
queue <int> q;
int n,m,s,cost[NMAX];
bool used[NMAX];
 
void read ()
{
    fin>>n>>m>>s;
    for (int i=1, nod1, nod2; i<=m; ++i)
    {
        fin>>nod1>>nod2;
        a[nod1].push_back(nod2);
    }
 
}
 
void BFS ()
{
    q.push(s);
    cost[s]=0;
    used[s]=true;
    while (!q.empty())
    {
        int val=q.front();
        q.pop();
        for (int i=0; i<a[val].size(); ++i)
        {
            if (!used[a[val][i]])
            {
                used[a[val][i]]=true;
                cost[a[val][i]]=cost[val]+1;
                q.push(a[val][i]);
            }
        }
    }
    for (int i=1; i<=n; ++i)
    {
        if (used[i])
            fout<<cost[i]<<" ";
        else
            fout<<"-1 ";
    }
    fout<<"\n";
}
 
int main ()
{
    read ();
    BFS ();
    fin.close();
    fout.close();
    return 0;
}