Cod sursa(job #1266036)

Utilizator dan.seremetDan Seremet dan.seremet Data 18 noiembrie 2014 09:00:37
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;

ifstream u ("bfs.in");
ofstream w ("bfs.out");

const int nmax=1e5;
int n, m, s, d[nmax+1];
vector <int> v[nmax+1];

void graph_read()
{int i, a, b;
 u>>n>>m>>s;
 for(i=1; i<=m; i++)
    {u>>a>>b;
     v[a].push_back(b);
    }
}

void init()
{for(int i=0; i<=n+1; i++)
    d[i]=-1;
}

void bfs(int s)
{queue <int> q;
 int i, z, f;
 q.push(s);
 d[s]=0;
 while(!q.empty())
    {f=q.front();
     z=v[f].size();
     for(i=0; i<z; i++)
        {if(d[v[f][i]]==-1)
            {q.push(v[f][i]);
             d[v[f][i]]=d[f]+1;
            }
        }
     q.pop();
    }
}

int main()
{graph_read();
 init();
 bfs(s);
 int i;
 for(i=1; i<=n; i++)
    w<<d[i]<<" ";
 return 0;
}