Cod sursa(job #1981907)

Utilizator radu.millio15Radu Millio radu.millio15 Data 17 mai 2017 10:02:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <stdio.h>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
const int NMAX=100005;
vector <int> G[NMAX];
int viz[NMAX], d[NMAX], t[NMAX];
FILE *fin, *fout;
void bfs(int u, int cc)
{

    int j;
    queue <int> q;
    viz[u]=cc;
    q.push(u);
    while(!q.empty())
    {
        u=q.front();
        for(j=0; j<G[u].size(); j++)
        {
            int v=G[u][j];
            if(!viz[v])
            {
                viz[v]=cc;
                t[v]=u;
                d[v]=d[u]+1;
                q.push(v);
            }
        }
        //fprintf(fout, "%d ", u);
        q.pop();
    }
}
int main()
{
    int u,v,i,cc=1,n,m,x;
    fin=fopen("bfs.in", "r");
    fout=fopen("bfs.out", "w");
    fscanf(fin, "%d%d%d", &n, &m, &x);
    for(i=1; i<=m; i++)
    {
        fscanf(fin, "%d%d", &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(x, cc);
    for(i=1; i<=n; i++)
    {
      if(viz[i]==0) d[i]=-1;
      fprintf(fout, "%d ", d[i]);
    }
    return 0;
}