Cod sursa(job #1199437)

Utilizator breahnadavidBreahna David breahnadavid Data 19 iunie 2014 14:25:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<iostream>
#include<fstream>
#include<vector>
#define maxn 100005
using namespace std;

ifstream f("bfs.in");
ofstream g("bfs.out");

vector <int> t[maxn];
int n,m,s,i,j,nr_arc[maxn],coada[maxn];

void parcurg(int s)
        {
        int sf_coada=1;
        for(i=1;i<=sf_coada;i++)
                for(j=0;j<t[coada[i]].size();j++)
                        if(nr_arc[t[coada[i]][j]]==0&&t[coada[i]][j]!=s)
                                {
                                coada[++sf_coada]=t[coada[i]][j];
                                nr_arc[t[coada[i]][j]]=nr_arc[coada[i]]+1;
                                }
        }

int main()
{
f>>n>>m>>s;

while(f>>i>>j)t[i].push_back(j);


nr_arc[s]=0;
coada[1]=s;
parcurg(s);


for(i=1;i<=n;i++)
if(i==s)g<<"0 ";
else
if(nr_arc[i]==0)g<<"-1 ";
else
g<<nr_arc[i]<<' ';

g.close();
return 0;
}