Cod sursa(job #2875107)

Utilizator Tudose_StefanTudose Alexandru Stefan Tudose_Stefan Data 20 martie 2022 23:03:55
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int nrmuchii, nrnoduri, i, j, start, fata, spate;


int main()
{
    fin >> nrnoduri >> nrmuchii >> start;
    vector <int> vecini[nrnoduri];
    vector <int> rez;
    int coada[nrnoduri+1];
    bool viz[nrnoduri];
    memset(viz, 0, sizeof(viz));
    memset(coada, 0, sizeof(coada));
    while (fin >> i >> j)
    {
        vecini[i-1].push_back(j);
        vecini[j-1].push_back(i);
    }
    for (i = 0; i < nrnoduri; i++)
    {
        sort(vecini[i].begin(), vecini[i].end());
        if (vecini[i].size())
            for (auto j = vecini[i].end()-1; j > vecini[i].begin(); j--)
                if (*j == *(j-1))
                    vecini[i].erase(j);
    }
    viz[start-1] = 1;
    coada[0] = start;
    while (coada[spate])
    {
        for (auto i : vecini[coada[spate]-1])
        {
            if (viz[i-1] == 0)
            {
                coada[++fata] = i;
                viz[i-1] = 1;
            }
        }
        spate++;
    }
    for (i = 0; i <= fata; i++)
        fout << coada[i] << ' ';

    return 0;
}