Cod sursa(job #1453458)

Utilizator refugiatBoni Daniel Stefan refugiat Data 23 iunie 2015 16:35:24
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include<cstdio>
#include<iostream>
#include<fstream>
#include<queue>
#include<bitset>
#include<list>
using namespace std;
queue<int> q;
int x[100005];
list<int> v[100005];
int main()
{
    //ifstream si;
    //si.open("numere.in");
    FILE* si=fopen("bfs.in","r");
    //FILE* so=fopen("simetric1.out","w");
    ofstream so;
    so.open("bfs.out");
    int n,m,s;
    fscanf(si,"%i %i %i",&n,&m,&s);
    int a,c;
    int i;
    for(i=0;i<m;++i)
    {
        fscanf(si,"%i %i",&a,&c);
        v[a].push_back(c);
    }
    q.push(s);
    int d=1;
    bitset<100005> b;
    b[s]=true;
    list<int>::iterator j;
    while(q.size())
    {
        m=q.size();
        for(i=0;i<m;++i)
        {
            for(j=v[q.front()].begin();j!=v[q.front()].end();++j)
            {
                if(b[*j]==0)
                {
                    q.push(*j);
                    b[*j]=1;
                    x[*j]=d;
                }
            }
            q.pop();
        }
        ++d;
    }
    for(i=1;i<=n;++i)
    {
        if(b[i]==0)
            so<<-1<<' ';
        else
            so<<x[i]<<' ';
    }
    so<<'\n';
}