Cod sursa(job #1884279)

Utilizator CalarisPredut Denis Stefanita Calaris Data 18 februarie 2017 16:40:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

const int MAX = 100002;

vector<int>node[MAX];
int ans[MAX];

int main()
{
    fstream f("bfs.in",ios::in);
    ofstream g("bfs.out");

    int N,M,start,x,y,i,current,it,sz;

    f>>N>>M>>start;

    for(i = 0;i<M;++i)
        {
       f>>x>>y;
       node[x].push_back(y);
        }
    vector<int> Queue;
    Queue.push_back(1);
    Queue.push_back(start);

    for(i=1;i<=Queue[0];++i)
        {
         current = Queue[i];
         sz = node[current].size();

         for(it=0;it<sz;++it)
            {
             if(current==node[current][it])continue;
             if(!ans[node[current][it]])
                {
                Queue.push_back(node[current][it]);
                Queue[0]+=1;
                ans[node[current][it]]=ans[current]+1;
                }
            }
        }

    for(i=1;i<=N;++i)
        {
        if(i==start)g<<0<<" ";
        else if(ans[i]==0)g<<-1<<" ";
        else g<<ans[i]<<" ";
        }



    return 0;
}