9569 2024. 02. 23 10:33:22 zsebi Hálózati átvitel cpp17 Hibás válasz 0/50 28ms 7800 KiB
// halozati.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <queue>

#define ll long long 
using namespace std;
ll n, m, kezd, maxim;
struct adat
{
    ll lep = 0, lat = 0, ert = -1;
    vector<pair<ll, ll>>sz;
};
vector<adat>x;
struct ut
{
    ll  hova,mini;
};
priority_queue<ut>v;
bool operator<(const ut& a, const ut& b)
{
    return a.mini < b.mini;
}

int main()
{
    cin >> n >> m >> kezd >> maxim;
    x.resize(n + 1);
    for (int i = 1; i <= m; ++i)
    {
        ll a, b, c;
        cin >> a >> b >> c;
        x[a].sz.push_back({ b,c });
        x[b].sz.push_back({ a,c });
    }

    v.push({ kezd,100001 });
    while (!v.empty())
    {
        ut akt = v.top();
        while (x[akt.hova].lat && !v.empty())
        {
            akt = v.top();
            v.pop();
        }
        if (v.empty())break;
        x[akt.hova].lat = 1;
        x[akt.hova].ert = akt.mini;
        for (auto& e : x[akt.hova].sz)
        {
            if (!x[e.first].lat && x[akt.hova].lep + 1 <= maxim)
            {
                ll a = min(x[akt.hova].ert, e.second);
                if (a > x[e.first].ert)
                {
                    x[e.first].lep = x[akt.hova].lep + 1;
                    x[e.first].ert = min(x[akt.hova].ert, e.second);
                    v.push({ e.first,x[e.first].ert });
                }
            }
        }
    }
    for (int i = 1; i <= n; ++i)
    {
        if (i == kezd)cout << "0\n";
        else cout << x[i].ert << "\n";
    }
    return 0;
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started: 
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Részfeladat Összpont Teszt Verdikt Idő Memória
base 0/50
1 Elfogadva 0/0 3ms 1880 KiB
2 Hibás válasz 0/0 3ms 2156 KiB
3 Hibás válasz 0/1 3ms 2216 KiB
4 Hibás válasz 0/1 3ms 2496 KiB
5 Hibás válasz 0/2 3ms 2668 KiB
6 Hibás válasz 0/2 3ms 2808 KiB
7 Hibás válasz 0/2 4ms 3056 KiB
8 Hibás válasz 0/2 3ms 3012 KiB
9 Hibás válasz 0/1 4ms 3296 KiB
10 Hibás válasz 0/1 4ms 3568 KiB
11 Hibás válasz 0/1 6ms 3752 KiB
12 Hibás válasz 0/1 8ms 3908 KiB
13 Hibás válasz 0/2 6ms 3952 KiB
14 Hibás válasz 0/2 8ms 4128 KiB
15 Hibás válasz 0/2 12ms 5036 KiB
16 Hibás válasz 0/2 12ms 5012 KiB
17 Hibás válasz 0/2 12ms 5268 KiB
18 Hibás válasz 0/2 12ms 5344 KiB
19 Hibás válasz 0/2 12ms 5368 KiB
20 Hibás válasz 0/2 12ms 5608 KiB
21 Hibás válasz 0/1 14ms 6244 KiB
22 Hibás válasz 0/1 17ms 6256 KiB
23 Hibás válasz 0/1 19ms 6656 KiB
24 Hibás válasz 0/1 25ms 7292 KiB
25 Hibás válasz 0/2 27ms 7568 KiB
26 Hibás válasz 0/2 27ms 7696 KiB
27 Hibás válasz 0/2 28ms 7800 KiB
28 Hibás válasz 0/2 25ms 7684 KiB
29 Hibás válasz 0/2 25ms 7784 KiB
30 Hibás válasz 0/2 25ms 7556 KiB
31 Hibás válasz 0/2 24ms 7568 KiB
32 Hibás válasz 0/2 25ms 7696 KiB