9609 2024. 02. 23 14:28:43 Vkrisztian01 Hálózati átvitel cpp17 Időlimit túllépés 22/50 646ms 16016 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;
set<pair<int,pair<int,int> > > seged;

int main()
{
    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,0);
    seged.insert(make_pair(1e9,make_pair(0,k)));
    while(!seged.empty())
    {
        tav=seged.begin()->first;
        lepes=seged.begin()->second.first;
        csucs=seged.begin()->second.second;
        seged.erase(seged.begin());
        if(dp[csucs][lepes]>=tav) continue;
        index=lepes;
        while(index<=h && dp[csucs][index]<tav)
        {
            dp[csucs][index]=tav;
            ++index;
        }
        if(ki[csucs]==-1) ki[csucs]=tav;
        else ki[csucs]=max(ki[csucs],tav);
        if(lepes==h) continue;
        for(auto to:g[csucs])
        {
            if(dp[to.first][lepes+1]>=min(tav,to.second)) continue;
            seged.insert(make_pair(min(tav,to.second),make_pair(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 22/50
1 Elfogadva 0/0 3ms 1944 KiB
2 Elfogadva 0/0 4ms 2112 KiB
3 Elfogadva 1/1 3ms 2324 KiB
4 Elfogadva 1/1 3ms 2664 KiB
5 Elfogadva 2/2 4ms 2812 KiB
6 Elfogadva 2/2 13ms 2860 KiB
7 Elfogadva 2/2 20ms 2952 KiB
8 Elfogadva 2/2 19ms 3180 KiB
9 Elfogadva 1/1 6ms 3520 KiB
10 Elfogadva 1/1 65ms 3712 KiB
11 Időlimit túllépés 0/1 563ms 2808 KiB
12 Időlimit túllépés 0/1 586ms 3236 KiB
13 Időlimit túllépés 0/2 569ms 3324 KiB
14 Időlimit túllépés 0/2 558ms 3480 KiB
15 Időlimit túllépés 0/2 555ms 4024 KiB
16 Időlimit túllépés 0/2 646ms 3696 KiB
17 Időlimit túllépés 0/2 582ms 3844 KiB
18 Időlimit túllépés 0/2 558ms 4244 KiB
19 Időlimit túllépés 0/2 569ms 4036 KiB
20 Időlimit túllépés 0/2 554ms 4296 KiB
21 Időlimit túllépés 0/1 569ms 7960 KiB
22 Időlimit túllépés 0/1 559ms 8016 KiB
23 Időlimit túllépés 0/1 563ms 8024 KiB
24 Időlimit túllépés 0/1 554ms 8292 KiB
25 Időlimit túllépés 0/2 574ms 9304 KiB
26 Időlimit túllépés 0/2 574ms 9176 KiB
27 Időlimit túllépés 0/2 565ms 9404 KiB
28 Elfogadva 2/2 441ms 14652 KiB
29 Elfogadva 2/2 532ms 15744 KiB
30 Elfogadva 2/2 518ms 16016 KiB
31 Elfogadva 2/2 501ms 15912 KiB
32 Elfogadva 2/2 549ms 16008 KiB