Cod sursa(job #1129024)

Utilizator ovidiu95Decean Ovidiu Ciprian ovidiu95 Data 27 februarie 2014 19:41:49
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<cstdio>
#include<vector>
#include<cstring>
#define Max 100005

using namespace std;
int x,y,m,n,s,l,viz[Max],c[Max];
vector <int> a[Max];
void bfs(int nod)
{
    int i,j;
    memset(viz,-1,sizeof(viz));
    l=1; c[1]=nod; viz[nod]=0;
    for(i=1;i<=l;++i)
        for(j=0;j<a[c[i]].size();++j)
            if(viz[a[c[i]][j]]==-1)
            {
                    c[++l]=a[c[i]][j];
                    viz[c[l]]=viz[c[i]]+1;
            }
}
int main()
{
    int i;
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&n,&m,&s);
    for(i=1;i<=m;++i)
    {
        scanf("%d%d",&x,&y);
        a[x].push_back(y);
    }
    for(i=1;i<=n;++i)
    bfs(s);
    for(i=1;i<=n;++i) printf("%d ",viz[i]);
    return 0;
}