Cod sursa(job #1470268)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 10 august 2015 17:47:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define iter vector<int>::iterator
const char iname[] = "bfs.in";
const char oname[] = "bfs.out";

int dist[100005];
bool viz[1000005];
vector<int> muchie[100005];
void bfs(int sursa)
{
    queue <int> q;
    q.push(sursa);
    viz[sursa] = true;
    dist[sursa] = 1;
    while(!q.empty())
    {
        int nod = q.front();
        q.pop();
        for(iter it = muchie[nod].begin(); it != muchie[nod].end(); ++it)
            if(!viz[*it])
            {
                viz[*it] = true;
                q.push(*it);
                dist[*it] = dist[nod] + 1;
            }
    }
}
int main()
{
    FILE *in = fopen(iname, "r");
    FILE *out = fopen(oname, "w");
    int n, m, sursa;
    fscanf(in, "%d %d %d\n", &n, &m, &sursa);
    for(int i = 0; i < m; i++)
    {
        int a,b;
        fscanf(in, "%d %d\n", &a, &b);
        muchie[a].push_back(b);
    }
    bfs(sursa);
    for(int i = 1; i <= n; i++)
        fprintf(out, "%d ", dist[i] - 1);
    return 0;
}