Cod sursa(job #999576)

Utilizator contulmeuMunteanu Vasile contulmeu Data 20 septembrie 2013 20:33:42
Problema BFS - Parcurgere in latime Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include<queue>
#include <vector>
using namespace std;

int n;
const int MaxN=1000;
int a[MaxN][MaxN];
vector<int> d(MaxN, -1);
queue<int> Q;
void bfs(int source)
{
    Q.push(source);
    d[source]=0;
    while(!Q.empty()) {
    int nod=Q.front();
        Q.pop();
        for(int i=1;i<=n;i++)
        {
         if(a[nod][i]&&d[i]==-1)
         {
            Q.push(i);
            d[i]=d[nod]+1;
         }
        }

    }

}
int main()
{
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    int M,S;
    fin>>n>>M>>S;
    for(int i=1;i<=M;i++)
    {
        int x,y;
        fin>>x>>y;
        a[x][y] = 1;
    }


    bfs(S);
for(int i=1;i<=n;i++)
    fout<<d[i]<<' ';

    return 0;
}