153892025-02-19 10:50:55AblablablaAutópálya inflációcpp17Wrong answer 0/100103ms71664 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;

        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*(1ll << (i - 1))) % MOD;
                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";
    }*/
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Wrong answer100ms71476 KiB
subtask20/8
3Accepted71ms71220 KiB
4Wrong answer85ms71220 KiB
5Wrong answer86ms71220 KiB
6Accepted83ms71376 KiB
7Wrong answer71ms71220 KiB
subtask30/15
8Accepted1ms316 KiB
9Accepted1ms316 KiB
10Accepted1ms316 KiB
11Wrong answer1ms508 KiB
12Wrong answer1ms316 KiB
13Wrong answer1ms508 KiB
14Wrong answer1ms508 KiB
15Wrong answer1ms336 KiB
16Accepted1ms524 KiB
17Accepted1ms316 KiB
18Wrong answer1ms316 KiB
subtask40/34
19Accepted82ms71552 KiB
20Wrong answer98ms71604 KiB
21Wrong answer101ms71664 KiB
22Wrong answer100ms71544 KiB
23Accepted97ms71556 KiB
24Wrong answer98ms71588 KiB
25Accepted83ms71524 KiB
26Accepted97ms71536 KiB
27Wrong answer93ms71400 KiB
28Wrong answer83ms70968 KiB
29Wrong answer70ms71220 KiB
30Wrong answer75ms62188 KiB
31Wrong answer83ms70708 KiB
32Wrong answer82ms70976 KiB
33Wrong answer94ms70992 KiB
subtask50/21
34Wrong answer4ms2356 KiB
35Wrong answer7ms2356 KiB
36Wrong answer7ms2664 KiB
37Wrong answer7ms2356 KiB
38Wrong answer7ms2356 KiB
39Wrong answer7ms2448 KiB
40Wrong answer7ms2332 KiB
41Wrong answer7ms2296 KiB
42Wrong answer4ms2240 KiB
43Wrong answer4ms2236 KiB
44Wrong answer3ms2356 KiB
45Wrong answer4ms2216 KiB
46Wrong answer4ms2356 KiB
47Wrong answer4ms2284 KiB
48Wrong answer4ms2368 KiB
49Wrong answer4ms2356 KiB
subtask60/22
50Wrong answer101ms71564 KiB
51Wrong answer103ms71532 KiB
52Wrong answer89ms71476 KiB
53Wrong answer87ms71484 KiB
54Wrong answer98ms71480 KiB
55Wrong answer85ms71460 KiB
56Wrong answer83ms71332 KiB
57Wrong answer97ms71448 KiB
58Wrong answer9ms8408 KiB
59Wrong answer71ms71220 KiB
60Wrong answer86ms71008 KiB
61Wrong answer85ms71300 KiB
62Wrong answer82ms69808 KiB
63Wrong answer85ms70248 KiB
64Wrong answer85ms70908 KiB
65Wrong answer100ms71032 KiB
66Wrong answer83ms71476 KiB