Cod sursa(job #966060)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 25 iunie 2013 11:18:48
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,S;
int viz[50011];
int c[350011];

vector<int> L[50011];

int main(void){
    register int i,j,x,y;

    f>>n>>m>>S;
    for(i=1;i<=m;i++){
        f>>x>>y;
        L[x].push_back(y);
    }

    int p,u;
    p=u=1;
    c[p]=S;
    viz[S]=1;
    while(p<=u){
        for(i=0;i<L[c[p]].size();i++){
           if(viz[L[c[p]][i]]==0){
                c[++u]=L[c[p]][i];
                viz[c[u]]=viz[c[p]]+1;
           }
        }
        p++;
    }

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