Cod sursa(job #1826751)

Utilizator DoubleNyNinicu Cristian DoubleNy Data 10 decembrie 2016 20:34:32
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.49 kb
#include <bits/stdc++.h>
using namespace std;
# define ios ios_base::sync_with_stdio(false);cin.tie(0);
typedef long long ll;
typedef long long int lli;
typedef pair < int, int> dbl;
const int maxInt = 1e9*2;
const lli maxLong = 1e18*2;

int n, m, vertex;
vector <int> adj[100001];
int dist[100001];
bool visited[100001];
queue <int> que;

void BFS(int vertex){
            memset(dist, -1, sizeof(dist));
            que.push(vertex);
            dist[vertex] = 0;
            while(!que.empty()){
                        vertex = que.front();
//                        cout << vertex << ' ';
                        que.pop();
                        visited[vertex] = true;
                        for(int i = 0; i < adj[vertex].size(); i++)
                                if(!visited[adj[vertex][i]]){
                                    que.push(adj[vertex][i]);
                                    dist[adj[vertex][i]] = dist[vertex] + 1;
                                }

            }
            cout << endl;
}
int main(){
            ifstream cin("bfs.in");
            ofstream cout("bfs.out");
            cin >> n >> m >> vertex;
            for(int i = 1; i<= m; i++){
                    int a,b;
                    cin >> a >> b;
                    adj[a].push_back(b);
                    //adj[b].push_back(a);

            }
            BFS(vertex);
            for(int i = 1; i <= n; i++)
                    cout << dist[i] << ' ';
            return(0);
}