Cod sursa(job #482893)

Utilizator andra23Laura Draghici andra23 Data 5 septembrie 2010 21:58:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
#include<vector>
#define nmax 100005

using namespace std;

vector<int> v[nmax];
int c[nmax], dist[nmax];

int main(){
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    int m, n, s;
    f>>n>>m>>s;
    int i, j, p, u, x;
    
    for (i = 1; i <= m; i++){
        f>>p>>u;
        v[p].push_back(u);
    }
    
    for (i = 1; i <= n; i++)
        dist[i] = -1;
    
    p = u = 1;
    c[1] = s;
    dist[s] = 0;
    
    while (p <= u){
        x = c[p];
        p++;
        for (i = 0; i < v[x].size(); i++){
            if (dist[v[x][i]] == -1){
                dist[v[x][i]] = dist[x]+1;
                u++;
                c[u] = v[x][i];
            }
        }        
    }

    for (i = 1; i <= n; i++)
        g<<dist[i]<<" ";
    g<<'\n';
    
    return 0;
}