Cod sursa(job #1004568)

Utilizator contulmeuMunteanu Vasile contulmeu Data 3 octombrie 2013 08:24:35
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include<queue>
#include <vector>
using namespace std;

int n;
const int MaxN=1000000;
//int a[MaxN][MaxN];
vector<int> d(MaxN, -1);
vector<int> Graf[MaxN];
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=0;i<Graf[nod].size();i++)
        {
         if(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;
        Graf[x].push_back(y);
    }


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

    return 0;
}