249342026-02-16 22:17:46ercseferencHálózati átvitelcpp17Accepted 50/5090ms5720 KiB
#include <bits/stdc++.h>
using namespace std;
int n,m,k,h;
struct dupla{int a,b;};
struct csucs{vector<int>tav; vector<dupla>kim;};
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n>>m>>k>>h;
    vector<csucs>a(n+1);
    for(int i=1; i<=n; i++){
        a[i].tav.resize(h+1);
        fill(a[i].tav.begin(),a[i].tav.end(),-1);}
    for(int i=0; i<m; i++){
        int x,y,z; cin>>x>>y>>z;
        a[x].kim.push_back({y,z});
        a[y].kim.push_back({x,z});}
    vector<int>l1,l2; l1.push_back(k);
    for(int i=0; i<=h; i++)a[k].tav[i]=INT_MAX;
    for(int i=0; i<h; i++){
        for(int j:l1){
            for(dupla l:a[j].kim){
                if(a[l.a].tav[i+1]<min(l.b,a[j].tav[i])){
                    for(int o=i+1; o<=h; o++)
                        a[l.a].tav[o]=min(l.b,a[j].tav[i]);
                        l2.push_back(l.a);}}}
        l1=l2; l2.clear();}
    for(int i=1; i<=n; i++)
        if(i==k)cout<<0<<'\n';
        else cout<<a[i].tav[h]<<'\n';
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/01ms316 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms500 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms316 KiB
8Accepted2/21ms316 KiB
9Accepted1/12ms564 KiB
10Accepted1/12ms564 KiB
11Accepted1/13ms564 KiB
12Accepted1/14ms568 KiB
13Accepted2/24ms564 KiB
14Accepted2/24ms564 KiB
15Accepted2/27ms820 KiB
16Accepted2/26ms820 KiB
17Accepted2/27ms844 KiB
18Accepted2/27ms888 KiB
19Accepted2/27ms820 KiB
20Accepted2/27ms820 KiB
21Accepted1/117ms4548 KiB
22Accepted1/121ms4680 KiB
23Accepted1/124ms4660 KiB
24Accepted1/128ms4868 KiB
25Accepted2/239ms5684 KiB
26Accepted2/241ms5720 KiB
27Accepted2/241ms5644 KiB
28Accepted2/264ms5064 KiB
29Accepted2/287ms5676 KiB
30Accepted2/282ms5640 KiB
31Accepted2/289ms5676 KiB
32Accepted2/290ms5700 KiB