153432025-02-19 07:55:53AblablablaAutópálya inflációcpp17Hibás válasz 0/100111ms71636 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

typedef pair<ll, ll> pii;

const ll INF = 4e18 + 7;
const ll MOD = 1e9 + 7;

vector<ll> ans;
vector<ll> mely;

struct comp{
    bool operator()(ll a, ll b){
        if(ans[a] == ans[b]){
            return mely[a] > mely[b];
        }
        return ans[a] > ans[b];
    }
};

int main()
{
    ll n, m;
    cin >> n >> m;

    vector<vector<ll>> csucsok(n, vector<ll>()), hossz(n, vector<ll>());
    for(ll i = 0; i < m; i++){
        ll a, b, c;
        cin >> a >> b >> c;
        a--; b--;

        csucsok[a].push_back(b);
        hossz[a].push_back(c);
        csucsok[b].push_back(a);
        hossz[b].push_back(c);
    }

    priority_queue<ll, vector<ll>, comp> bejar;
    ans.assign(n, INF);
    ans[0] = 0;
    bejar.push(0);
    vector<bool> bejart(n);
    vector<vector<ll>> opciok(n, vector<ll>(n + 2, INF));
    opciok[0][1] = 0;
    mely.assign(n, 0);


    while(!bejar.empty()){
        ll akt = bejar.top();
        bejar.pop();

        if(bejart[akt]) continue;

        //cout << akt << "\n";

        bejart[akt] = 1;

        for(ll i = 0; i < csucsok[akt].size(); i++){
            ll kovi = csucsok[akt][i];
            ll suly = hossz[akt][i];

            if(bejart[kovi]) continue;

            for(int i = 1; i <= n; i++){
                if(opciok[akt][i] == INF) continue;

                ll tav = (opciok[akt][i] + suly*i);
                opciok[kovi][i + 1] = min(opciok[kovi][i + 1], tav);

                if(ans[kovi] > tav) mely[kovi] = i + 1;
                ans[kovi] = min(ans[kovi], tav);
            }

            bejar.push(kovi);
        }
    }

    for(int i = 1; i < n; i++){
        cout << ans[i] % MOD << "\n";
    }

    /*for(int j = 1; j <= n; j++){
        for(int i = 0; i < n; i++){
            if(opciok[i][j] == INF){
                cout << "-1\t";
            } else{
                cout << opciok[i][j] << "\t";
            }
        }
        cout << "\n";
    }*/
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Hibás válasz93ms71476 KiB
subtask20/8
3Hibás válasz87ms71220 KiB
4Hibás válasz87ms71232 KiB
5Hibás válasz75ms71220 KiB
6Hibás válasz86ms71476 KiB
7Hibás válasz74ms71208 KiB
subtask30/15
8Hibás válasz1ms316 KiB
9Hibás válasz1ms316 KiB
10Hibás válasz1ms500 KiB
11Hibás válasz1ms500 KiB
12Hibás válasz1ms316 KiB
13Hibás válasz1ms500 KiB
14Elfogadva1ms316 KiB
15Hibás válasz1ms316 KiB
16Elfogadva1ms316 KiB
17Hibás válasz1ms316 KiB
18Hibás válasz1ms316 KiB
subtask40/34
19Hibás válasz105ms71636 KiB
20Hibás válasz92ms71600 KiB
21Hibás válasz104ms71476 KiB
22Hibás válasz92ms71448 KiB
23Hibás válasz104ms71468 KiB
24Hibás válasz104ms71540 KiB
25Hibás válasz90ms71632 KiB
26Hibás válasz90ms71524 KiB
27Hibás válasz108ms71476 KiB
28Hibás válasz74ms70968 KiB
29Hibás válasz72ms71220 KiB
30Hibás válasz78ms62168 KiB
31Hibás válasz71ms70936 KiB
32Hibás válasz89ms70968 KiB
33Hibás válasz98ms70964 KiB
subtask50/21
34Hibás válasz4ms2548 KiB
35Hibás válasz7ms2356 KiB
36Hibás válasz7ms2356 KiB
37Hibás válasz7ms2548 KiB
38Hibás válasz7ms2356 KiB
39Hibás válasz7ms2540 KiB
40Hibás válasz7ms2356 KiB
41Hibás válasz7ms2356 KiB
42Hibás válasz4ms2360 KiB
43Hibás válasz4ms2364 KiB
44Hibás válasz4ms2356 KiB
45Hibás válasz4ms2356 KiB
46Hibás válasz4ms2356 KiB
47Hibás válasz3ms2100 KiB
48Hibás válasz4ms2356 KiB
49Hibás válasz4ms2356 KiB
subtask60/22
50Hibás válasz107ms71464 KiB
51Hibás válasz105ms71444 KiB
52Hibás válasz92ms71480 KiB
53Hibás válasz93ms71600 KiB
54Hibás válasz104ms71472 KiB
55Hibás válasz92ms71544 KiB
56Hibás válasz98ms71476 KiB
57Hibás válasz111ms71316 KiB
58Hibás válasz9ms8244 KiB
59Hibás válasz74ms71208 KiB
60Hibás válasz86ms71220 KiB
61Hibás válasz86ms71220 KiB
62Hibás válasz72ms69828 KiB
63Hibás válasz71ms70196 KiB
64Hibás válasz103ms70964 KiB
65Hibás válasz92ms70892 KiB
66Hibás válasz105ms71356 KiB