Cod sursa(job #1374531)

Utilizator roxana_97Soare Roxana Florentina roxana_97 Data 5 martie 2015 09:50:44
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<fstream>
#include<vector>
#include<queue>
#include<bitset>
#define Nmax 1000099
#define inf 2000000000
using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

int n,m,d[Nmax],x,y,s;
vector<int> G[Nmax];
bitset<Nmax> viz;
queue<int > Q;

void BFS(int s)
{
   for(int i=1;i<=n;i++)
   {
       d[i]=inf;
       viz[i]=0;
   }
   d[s]=0;
   viz[s]=1;
   Q.push(s);
   while(!Q.empty())
   {
       int node=Q.front();
       Q.pop();
       for(vector<int> :: iterator it=G[node].begin(); it!=G[node].end(); it++)
        if(viz[*it]==0)
       {
           viz[*it]=1;
           d[*it]=d[node]+1;
           Q.push(*it);
       }
   }

}

int main()
{
    f>>n>>m>>s;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y;
        G[x].push_back(y);
    }
    BFS(s);
    for(int i=1;i<=n;i++)
        if(d[i]==inf) g<<-1<<' ';
        else g<<d[i]<<' ';
    g<<'\n';
    f.close();g.close();
    return 0;
}