Cod sursa(job #1197811)

Utilizator MaarcellKurt Godel Maarcell Data 13 iunie 2014 21:13:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#include <vector>
#include <queue>
#include <string.h>
using namespace std;
vector<int> noduri[100005]; int n,m,t; int dist[100005];
void bfs(int nod){
    queue<int> q;
    q.push(nod);
    dist[nod] = 0;
    int cur,i;
    while (!q.empty()){
        cur = q.front(); q.pop();

        for (i=0; i<noduri[cur].size(); i++)
            if (dist[noduri[cur][i]] == -1){
                dist[noduri[cur][i]] = 1 + dist[cur];
                q.push(noduri[cur][i]);

            }
    }
}
int main(){
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    scanf("%d %d %d",&n,&m,&t);
    int x,y,nr=0,i;
    for (i=0; i<m; i++)
    {
        scanf("%d %d",&x,&y);
        noduri[x].push_back(y);
    }
    memset(dist,-1,sizeof(dist));
    bfs(t);
    for (i=1; i<=n; i++) printf("%d ",dist[i]);
}