Блог пользователя 4eloVeeek_C_umeHem

Автор 4eloVeeek_C_umeHem, история, 7 недель назад, По-русски
#include <algorithm>
#include <deque>
#include <functional>
#include <iostream>
#include <numeric>
#include <queue>
#include <string>
#include <vector>

using namespace std;

#define vec vector
#define str string
#define int long long
#define pr_qu priority_queue
#define que queue
#define deq deque
#define inf 1e18
#define pii pair<long long, long long>

signed main()
{
    int n, m, k;
    cin >> n >> m >> k;

    vec<vec<pii>> g(n);

    for (int i = 0; i < m; ++i)
    {
        int u, v, w;
        cin >> u >> v >> w;
        g[u - 1].push_back({v - 1, w});
    }

    if (k == 0)
    {
        cout << 0 << '\n';
        return 0;
    }

    vec<int> dpp(n, 0);
    vec<int> dpc(n, inf);

    for (int i = 1; i <= k; ++i)
    {
        dpc = vector<int>(n, inf);
        for (int j = 0; j < n; ++j)
        {
            if (dpp[j] == inf)
                continue;
            for (auto& [v, w] : g[j])
            {
                if (dpp[j] + w < dpc[v])
                    dpc[v] = dpp[j] + w;
            }
        }
        swap(dpp, dpc);
    }

    int ans = inf;
    for (auto& i : dpp)
        if (i < ans)
            ans = i;

    if (ans == inf)
        cout << "IMPOSSIBLe\n";
    else
        cout << ans << '\n';
}
  • Проголосовать: нравится
  • -3
  • Проголосовать: не нравится