Cod sursa(job #2380043)

Utilizator PodaniPodani Teodor Mircea Podani Data 14 martie 2019 13:50:28
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
vector <int> v[100005],viz;

//vector< vector<int> > v;
/*
vector<int> aux;
for(int i = 0;i < n; i++)
    v.push_back(aux);
v[a].push_back(b);

*/
void bfs(int val,int i)
{


     unsigned int j;

     for(j=0;j<v[i].size();j++)
     {
         if(viz[v[i][j]]==-1)
         {
             viz[v[i][j]]=val+1;
         }
         else
         {
             if(viz[v[i][j]]>val+1)
             {
                 viz[v[i][j]]=val+1;
             }
         }
     }

     for(j=0;j<v[i].size();j++)
     {
         if(viz[v[i][j]]==-1)
         bfs(val+1,v[i][j]);
     }



}

int main()
{
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    unsigned int n,m,s,x,y,i;

    fin>>n>>m>>s;
    for(i=0;i<m;i++)
    {
        fin>>x>>y;
        v[x-1].push_back(y-1);
        v[y-1].push_back(x-1);
    }
    for(i=0;i<n;i++)
    {
        viz.push_back(-1);
    }
    viz[s-1]=0;
    bfs(0,s-1);

    for(i=0;i<n;i++)
    {
        fout<<viz[i]<<" ";
    }
    return 0;
}