Cod sursa(job #1857265)

Utilizator dragos99Homner Dragos dragos99 Data 25 ianuarie 2017 22:51:51
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<fstream>
#include<vector>
#include<string.h>
#define maxn 100010
using namespace std;

long x,y,i,n,m,s,tr;
long lung[maxn],viz[maxn],nivel[maxn];
vector <long> a[maxn],c;

void bfs(){
    int p=0,u=0;
    c.push_back(s);
    viz[s]=1;
    while(p<=u)
    {
        for(i=0;i<lung[c[p]];i++)
            if(viz[a[c[p]][i]]==0)
                {
                    c.push_back(a[c[p]][i]);
                    u++;
                    nivel[c[u]] = nivel[c[p]]+1;
                    viz[i]=1;
                }
        p++;
    }
}

int main()
{
    ifstream f("bfs.in");
    ofstream g("bfs.out");
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
    f>>x>>y;
    a[x].push_back(y);
}
for(i=1;i<=n;i++)
    lung[i]=a[i].size();
bfs();
for(i=1;i<=n;i++)
{
    if(nivel[i]==0 && i!=s)
        g<<-1<<" ";
    else
        g<<nivel[i]<<" ";
}
return 0;
}