Cod sursa(job #1694885)

Utilizator david12345Rotari David david12345 Data 26 aprilie 2016 11:01:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
 
bool viz[100005], V[100005];
int n,m ,z, x, y,u, r[100005], h[100005];
 
typedef struct nod{
        int info;
        nod* next;
};
nod* c[100005];
 
void add(int i, int j){
        nod* d= new nod;
        d->info = j;
        d->next = c[i];
        c[i]=d;
}
 
void bfs(int i){
    for(nod* p = c[i]; p; p= p->next){
        if(!V[p->info]){
            V[p->info] = 1;
            h[++u] = p->info;
            r[p->info] = r[i] + 1;
            }
         
        }
    }
int main(){
    u= 1;
    cin>>n>>m>>z;
    h[1] = z;
    V[z] = 1;
    for(int i = 1; i <= m; i++){
        cin >> x >> y;
        add(x,y);
        }
    for(int i = 1; i <= n; i++)
          bfs(h[i]);
     
    for(int i = 1; i <= n; i++){
        if(i == z) cout << 0 << " ";
            else if(r[i] != 0) cout << r[i] << " ";
                else cout << -1 << " ";
        }
    return 0;
}