Cod sursa(job #1981899)

Utilizator andreinichitaTirziu Nichita andreinichita Data 17 mai 2017 09:58:57
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <cstdio>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
const int NMAX=1005;
vector <int> G[NMAX];
int viz[NMAX],d[NMAX],t[NMAX];
void bfs(int u)
{
    queue <int>q;
    viz[u]=1;
    q.push(u);
    int j,v;
    while(!q.empty())
    {
        u=q.front();
        for(j=0; j<(int)G[u].size(); j++)
        {
            v=G[u][j];
            if(!viz[v])
            {
                viz[v]=1;
                t[v]=u;
                d[v]=d[u]+1;
                q.push(v);
            }
        }
        q.pop();
    }
}
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    int n,m,s,u,v,i;
    scanf("%d%d%d",&n,&m,&s);
    for(i=1; i<=m; i++)
    {
        scanf("%d%d",&u,&v);
        if(u!=v)
        G[u].push_back(v);
        //G[v].push_back(u);
    }
    for(i=1; i<=n; i++)
        sort(G[i].begin(),G[i].end());
    bfs(s);
    for(i=1; i<=n; i++)
        if(viz[i])
            printf("%d ",d[i]);
        else
            printf("-1 ");
    return 0;
}