Cod sursa(job #2384810)

Utilizator tudose_bogdanTudose Bogdan tudose_bogdan Data 21 martie 2019 10:47:03
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
using namespace std;
#include <list>
#include <queue>
#include <fstream>


class Graph{

int V;

list<int>*adj;

public:
    Graph(int v)
    {
        this->V=v;
        adj=new list<int>[v+1];
    }

    void addedge(int m,int n)
    {
        adj[m].push_back(n);
    }

    vector<int> BFS(int s)
    {

        vector<int>distante(V+1,-1);
        distante[s]=0;
        bool* vizitat=new bool[V];

        for(int i=1;i<=V;i++)
            vizitat[i]=false;

        queue<int> q;

        vizitat[s]=true;
        q.push(s);
        list<int>::iterator i;
        while(!q.empty())
        {
            s=q.front();
            //cout<<s<<" ";
            q.pop();
            for(i=adj[s].begin();i!=adj[s].end();++i)
            {
                if(!vizitat[*i])
                {
                    vizitat[*i]=true;
                    distante[*i]=distante[s]+1;
                    q.push(*i);
                }
            }

        }
    return distante;
    }

};




int main()
{


int n,m,s;
ifstream f("bfs.in");
ofstream g("bfs.out");

f>>n>>m>>s;

Graph x(n);

for(int i=0;i<m;i++)
{
    int a,b;
    cin>>a>>b;
    x.addedge(a,b);
}

vector<int> u=x.BFS(s);
for(int i=1;i<=n;i++)
    g<<u[i]<<" ";







    return 0;
}