76692024-01-10 11:34:57CsongiA lehető legkevesebb átszállás (50 pont)cpp17Futási hiba 38/50182ms62544 KiB
#include <iostream>
#include <vector>

using namespace std;

pair<int, int> elerheto_csucs(int v, const vector<vector<int>>& allomasok, const vector<pair<int, int>>& vonatok)
{
    int legujabb = 0, index = 0;

    for (int i : allomasok[v])
    {
        if (vonatok[i].second > index)
        {
            legujabb = i;
            index = vonatok[i].second;
        }
    }

    return { legujabb, index };
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m;
    cin >> n >> m;

    vector<pair<int, int>> vonatok(n);
    vector<vector<int>> allomasok(m + 1);

    bool elso = false, utolso = false;

    for (int i = 0; i < n; i++)
    {
        int kezdo, veg;
        cin >> kezdo >> veg;
        if (i != 0 && vonatok[i-1].first == kezdo && vonatok[i-1].second > veg)
        {

        }
        else
        {
            vonatok[i] = { kezdo, veg };

            if (kezdo == 1)
                elso = true;
            if (veg == m)
                utolso = true;

            for (int j = kezdo; j <= veg; j++)
            {
                allomasok[j].push_back(i);
            }
        }
        
    }

    if (!elso || !utolso)
    {
        cout << "-1";
    }
    else
    {
        int jelenlegi = 1;
        vector<int> bejaras;

        while (jelenlegi < m)
        {
            auto [legujabb, ujIndex] = elerheto_csucs(jelenlegi, allomasok, vonatok);
            if (ujIndex <= jelenlegi) {
                cout << "-1";  // vegtelen loop?
                return 0;
            }
            jelenlegi = ujIndex;
            bejaras.push_back(legujabb);
        }

        cout << bejaras.size() - 1 << '\n';

        for (int i : bejaras)
        {
            cout << i + 1 << ' ';
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base38/50
1Elfogadva0/03ms1828 KiB
2Elfogadva0/052ms36276 KiB
3Elfogadva1/13ms2548 KiB
4Elfogadva1/13ms2632 KiB
5Elfogadva2/23ms2776 KiB
6Elfogadva2/23ms2860 KiB
7Elfogadva2/27ms6240 KiB
8Elfogadva2/28ms7340 KiB
9Elfogadva2/29ms8632 KiB
10Elfogadva2/214ms11776 KiB
11Elfogadva2/224ms16712 KiB
12Elfogadva2/228ms20564 KiB
13Elfogadva2/28ms7580 KiB
14Elfogadva2/217ms12004 KiB
15Elfogadva2/221ms16280 KiB
16Elfogadva2/229ms20960 KiB
17Elfogadva2/245ms29968 KiB
18Elfogadva2/248ms32180 KiB
19Elfogadva2/250ms34696 KiB
20Elfogadva2/254ms36368 KiB
21Elfogadva2/252ms38024 KiB
22Elfogadva2/252ms38548 KiB
23Futási hiba0/2123ms62544 KiB
24Futási hiba0/2119ms62372 KiB
25Futási hiba0/2148ms62368 KiB
26Futási hiba0/2172ms62344 KiB
27Futási hiba0/2182ms62180 KiB
28Futási hiba0/2145ms62168 KiB