Cod sursa(job #1445640)

Utilizator delta_wolfAndrei Stoica delta_wolf Data 30 mai 2015 16:50:02
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include<vector>
#include<cstring>
#define maxn 100010
using namespace std;
vector <int> a[maxn];
int n,m,l,i,start,x,y;
int g[maxn],s[maxn],cost[maxn];
void bfs(int nod)
{
    int i,j;
    l=1;
    memset(cost,-1,sizeof(cost));
    s[l]=nod;
    cost[nod]=0;
    for (i=1;i<=l;i++)
        for (j=0;j<g[s[i]];j++)
            if(cost[a[s[i]][j]]==-1)
            {

                s[++l] = a[s[i]][j];
                cost[s[l]] = cost[s[i]] + 1;
            }
}
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&n,&m,&start);
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        a[x].push_back(y);
    }
    for(i=1;i<=n;i++)
        g[i]=a[i].size();
 bfs(start);

    for (i = 1; i <= n; i++)
        printf("%d ", cost[i]);
    printf("\n");

    return 0;
}