Cod sursa(job #999167)

Utilizator emiemiEmi Necula emiemi Data 19 septembrie 2013 16:22:57
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
#include<vector>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,x,i,y,p,d[100001],viz[100001];
vector<int> v[100001];
queue<int> q;
void BFS(int p)
{
    for(i=1;i<=n;++i)
    d[i]=INF;
    d[p]=0; viz[p]=1;
    q.push(p);
    while(!q.empty())
    {
        x=q.front();
        q.pop();
        for(vector<int>::iterator it=v[x].begin();it!=v[x].end();++it)
        if(d[*it]>d[x]+1)
        {
            d[*it]=d[x]+1;
            if(!viz[*it])
            q.push(*it), viz[*it]=1;
        }
    }
}
int main()
{
    f>>n>>m>>p;
    for(i=1;i<=m;++i)
    {
        f>>x>>y;
        v[x].push_back(y);
    }
    BFS(p);
    for(i=1;i<=n;++i)
    if(d[i]<INF)
    g<<d[i]<<" ";
    else
    g<<"-1 ";
    return 0;
}