Cod sursa(job #1706185)

Utilizator dominiciorgandaDominic Iorganda dominiciorganda Data 21 mai 2016 20:55:36
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector<int>f[100001];
long long k,i,m,x,j,k1,i1,ct;
queue<int>q;
bool g[100001];
int h[100001];
int main()
{
    ifstream fin;
    ofstream fout;
    fin.open("bfs.in");
    fout.open("bfs.out");
    fin>>x>>m>>ct;
    for(k=1;k<=m;k++)
    {
        fin>>i>>j;
        f[i].push_back(j);
    }
    /*for(k=1;k<=x;k++)
    {
        if(f[k].size()>0)
        {
            cout<<k<<":";
            for(i=0;i<f[k].size();i++)
                cout<<" "<<f[k][i];
            cout<<endl;
        }
    }*/
    q.push(ct); h[ct]=0;g[ct]=1;
    for(;!q.empty();q.pop())
    {
        for(k=0;k<f[q.front()].size();k++)
        {
            i=f[q.front()][k];
            if(g[i]==0)
            {
                q.push(i);
                g[i]=1;
                h[i]=h[q.front()]+1;
            }
        }
    }
    for(k=1;k<=x;k++)
    {
        if(k==ct)
            fout<<"0 ";
        else
        {
            if(!h[k])
                fout<<"-1 ";
            else
                fout<<h[k]<<" ";
        }
    }
    return 0;
}