42572023-03-19 19:12:14nkdorka1212Hálózati átvitelcpp17Hibás válasz 13/5028ms5384 KiB
#include <bits/stdc++.h>

using namespace std;

struct edge
{
    int a,b,w;
};

int n,m,k,h;
vector<edge>e;
vector<pair<int,int>>velo; // {velo,distance}

void bellman_ford(int k)
{
   velo[k]={INT_MAX/2,0};
   for(int i=1;i<=h;i++)
   {
       for(int j=1;j<=m;j++)  //e[j].a,e[j].b
       {
           if(min(e[j].w,velo[e[j].a].first)> velo[e[j].b].first && velo[e[j].a].second+1<=i)
           {
               velo[e[j].b].first=min(e[j].w,velo[e[j].a].first);
               velo[e[j].b].second=velo[e[j].a].second+1;
           }
           if(min(e[j].w,velo[e[j].b].first)> velo[e[j].a].first && velo[e[j].b].second+1<=i)
           {
               velo[e[j].a].first=min(e[j].w,velo[e[j].b].first);
               velo[e[j].a].second=velo[e[j].b].second+1;
           }
       }
        /*for(int i=1;i<=n;i++)
        {
            cout<<velo[i].first<<" "<<velo[i].second<<"\n";
        }
        cout<<"\n";*/
   }

}

int main()
{
    cin>>n>>m>>k>>h;
    e.resize(m+1);
    velo.resize(n+1,{0,-1});
    for(int i=1;i<=m;i++)
    {
        cin>>e[i].a>>e[i].b>>e[i].w;
    }/*
    for(edge x : e)
    {
        cout<<x.a<<" "<<x.b<<" "<<x.w<<"\n";
    }*/
    bellman_ford(k);
    velo[k].first=0;
    for(int i=1;i<=n;i++)
    {
        cout<<velo[i].first<<"\n";
    }

    return 0;
}


/*
5 6 5 2
1 2 2
1 5 4
1 3 2
1 4 3
5 4 1
5 3 4

6 7 2 2
5 1 8
6 5 2
3 2 20
5 4 10
3 4 1
1 2 6
1 6 7

6 8 2 2
5 1 8
6 5 2
3 2 20
5 4 10
3 4 1
1 2 6
1 6 7
4 2 30

*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base13/50
1Elfogadva0/03ms2064 KiB
2Hibás válasz0/03ms2084 KiB
3Hibás válasz0/13ms2288 KiB
4Hibás válasz0/13ms2500 KiB
5Hibás válasz0/23ms2588 KiB
6Elfogadva2/23ms2616 KiB
7Hibás válasz0/23ms2720 KiB
8Hibás válasz0/23ms2936 KiB
9Hibás válasz0/14ms3176 KiB
10Hibás válasz0/14ms3256 KiB
11Elfogadva1/16ms3396 KiB
12Hibás válasz0/17ms3960 KiB
13Hibás válasz0/26ms3632 KiB
14Hibás válasz0/27ms3904 KiB
15Hibás válasz0/212ms4048 KiB
16Hibás válasz0/210ms4044 KiB
17Hibás válasz0/210ms4048 KiB
18Elfogadva2/212ms4180 KiB
19Elfogadva2/212ms4384 KiB
20Elfogadva2/210ms4404 KiB
21Hibás válasz0/113ms4708 KiB
22Hibás válasz0/117ms4556 KiB
23Hibás válasz0/120ms4680 KiB
24Hibás válasz0/124ms4676 KiB
25Elfogadva2/228ms4676 KiB
26Hibás válasz0/228ms4684 KiB
27Elfogadva2/228ms5004 KiB
28Hibás válasz0/224ms4952 KiB
29Hibás válasz0/225ms5080 KiB
30Hibás válasz0/224ms5384 KiB
31Hibás válasz0/224ms5340 KiB
32Hibás válasz0/225ms5336 KiB