Cod sursa(job #2207697)

Utilizator BiancaMariaVulsanVulsan Bianca Maria BiancaMariaVulsan Data 26 mai 2018 14:00:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
//Fiind dat un nod S, sa se determine, pentru fiecare nod X, numarul minim de arce ce trebuie parcurse pentru a ajunge din nodul sursa S la nodul X.
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s, viz[100001];
vector <int> v[100001];
queue <int> c;

void citire()
{
    int i,j,k;
    f>>n>>m>>s;
    for(k=0; k<m; k++)
    {
        f>>i>>j;
        v[i].push_back(j);
    }
}

void parcLatime(int i)
{
   int j,x;
   c.push(i);
   viz[i]=1;
   while(!c.empty())
   {
       x=c.front();
       c.pop();
       for(j=0; j<v[x].size(); j++)
        if(viz[v[x][j]]==0)
       {
           c.push(v[x][j]);
           viz[v[x][j]]=viz[x]+1;
       }
   }
}

int main()
{
    int i;
    citire();
    parcLatime(s);

    for(i=1; i<=n; i++)
        if(viz[i]==0) g<<-1<<" ";
        else
            if(i==s) g<<0<<" ";
        else
            g<<viz[i]-1<<" ";
    f.close();
    g.close();
    return 0;
}