Cod sursa(job #883534)

Utilizator D4n13LMuntean Dan Iulian D4n13L Data 20 februarie 2013 08:53:03
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<vector>
#include<queue>

using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");

const int N=100000;
queue<int> q;
vector <int> a[N];
int n,d[N],S;
void citire();
void bfs(int x0);
 int main()
 {
     citire();
     bfs(S);
     for(int i=1;i<=n;i++)
     {
        out<<d[i]<<" ";
     }
     return 0;

 }
 void citire()
 {
     int m,x,y,i,j;
     in>>n>>m>>S;
     for(i=1;i<=m;i++)
     {
         in>>x>>y;
         a[x].push_back(y);
     }
 }
 void bfs(int x0){
    int x,y;
    for(int i=1;i<=n;i++)
        d[i]=-1;
    d[x0]=0;
    q.push(x0);
    while(!q.empty())
    {
    x=q.front();
    q.pop();
    for(int i=0;i<a[x].size();i++){
        y=a[x][i];
        if(d[y]==-1)
        {
            q.push(y);
            d[y]=1+d[x];



        }

    }
    }

}