9620 2024. 02. 23 14:45:05 Vkrisztian01 Hálózati átvitel cpp17 Időlimit túllépés 41/50 578ms 15212 KiB
#include <iostream>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>

using namespace std;

int n,m,k,h,a,b,c,tav,lepes,csucs,index;
vector<int>ki;
vector<vector<int> > dp;
vector<vector<pair<int,int> > > g;
priority_queue<pair<int,pair<int,int> > > seged;

int main()
{
    cin.tie(0);
	ios::sync_with_stdio(false);
    cin>>n>>m>>k>>h;
    ki.assign(n+1,-1);
    dp.assign(n+1,vector<int>(h+1,0));
    g.resize(n+1);
    while(m--)
    {
        cin>>a>>b>>c;
        g[a].push_back(make_pair(b,c));
        g[b].push_back(make_pair(a,c));
    }
    dp[k]=vector<int>(h+1,1e9);
    seged.push(make_pair(-1*1e9,make_pair(-1*0,k)));
    while(!seged.empty())
    {
        tav=-1*seged.top().first;
        lepes=-1*seged.top().second.first;
        csucs=seged.top().second.second;
        seged.pop();
        if(dp[csucs][lepes]>tav) continue;
        if(ki[csucs]==-1) ki[csucs]=tav;
        else ki[csucs]=max(ki[csucs],tav);
        if(lepes==h) continue;
        for(auto to:g[csucs])
        {
            a=min(tav,to.second);
            if(dp[to.first][lepes+1]>=a) continue;
            index=lepes+1;
            while(index<=h && dp[to.first][index]<a)
            {
                dp[to.first][index]=a;
                ++index;
            }
            seged.push(make_pair(-1*a,make_pair(-1*(lepes+1),to.first)));
        }

    }
    ki[k]=0;
    for(int i=1;i<=n;i++) cout<<ki[i]<<"\n";
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 41/50
1 Elfogadva 0/0 3ms 1824 KiB
2 Elfogadva 0/0 3ms 2216 KiB
3 Elfogadva 1/1 3ms 2400 KiB
4 Elfogadva 1/1 3ms 2496 KiB
5 Elfogadva 2/2 3ms 2584 KiB
6 Elfogadva 2/2 4ms 2652 KiB
7 Elfogadva 2/2 4ms 2584 KiB
8 Elfogadva 2/2 4ms 2888 KiB
9 Elfogadva 1/1 4ms 3384 KiB
10 Elfogadva 1/1 32ms 3576 KiB
11 Elfogadva 1/1 125ms 3796 KiB
12 Elfogadva 1/1 129ms 3812 KiB
13 Elfogadva 2/2 143ms 3768 KiB
14 Elfogadva 2/2 194ms 4072 KiB
15 Elfogadva 2/2 411ms 4444 KiB
16 Elfogadva 2/2 330ms 4244 KiB
17 Elfogadva 2/2 386ms 4420 KiB
18 Elfogadva 2/2 460ms 4728 KiB
19 Elfogadva 2/2 421ms 4440 KiB
20 Elfogadva 2/2 358ms 4420 KiB
21 Elfogadva 1/1 375ms 11980 KiB
22 Időlimit túllépés 0/1 578ms 7052 KiB
23 Időlimit túllépés 0/1 554ms 6912 KiB
24 Időlimit túllépés 0/1 563ms 7220 KiB
25 Időlimit túllépés 0/2 559ms 7836 KiB
26 Időlimit túllépés 0/2 578ms 7896 KiB
27 Időlimit túllépés 0/2 565ms 8328 KiB
28 Elfogadva 2/2 204ms 13468 KiB
29 Elfogadva 2/2 257ms 14588 KiB
30 Elfogadva 2/2 259ms 14900 KiB
31 Elfogadva 2/2 261ms 15212 KiB
32 Elfogadva 2/2 256ms 15068 KiB