10902022-02-28 15:39:02batorfibalazsHálózati átvitelcpp14Hibás válasz 4/50593ms6208 KiB
#include <bits/stdc++.h>
using namespace std;


void kereso(int elozo);

int cs[10000];
int utak[100][10000][2]={}; //1. hova, 2. sebessege az utnak
int szamlalo[10000]={};
int sz, csomo, csat, h;
map <int, int> holtart;
int s[10000];

int main()
{
    ios_base::sync_with_stdio(false);
    cin >> sz >> csat >> csomo >> h;
    int s1,s2,s3;
    for (int i=0;i<csat;i++)
    {
        cin >> s1 >> s2 >> s3;
        s1--;
        s2--;
        utak[szamlalo[s1]][s1][0]=s2;
        utak[szamlalo[s2]][s2][0]=s1;
        utak[szamlalo[s1]][s1][1]=s3;
        utak[szamlalo[s2]][s2][1]=s3;
        szamlalo[s1]++;
        szamlalo[s2]++;
    }
    ///////////////////
    /*for (int i=0;i<sz;i++)
    {
        for (int j=0;j<szamlalo[i];j++)
        {
            cout << utak[j][i][0] << " " << utak[j][i][1] << "  ";
        }
        cout << szamlalo[i] << endl;
    }*/
    ///////////////////
    int hany=0;
    s1=1;
    s[0]=csomo-1;
    do
    {
        holtart.clear();
        hany++;
        for (int i=0;i<s1;i++)
        {
            kereso(s[i]);
        }
        s1=0;
        for (auto t:holtart)
        {
            s[s1]=t.first;
            s1++;
        }

    } while (holtart.size()!=0 and hany<h);
    cs[csomo-1]=0;
    //kiiras
    for (int i=0;i<sz;i++)
    {
        if (cs[i]==0 and i!=csomo-1) cout << -1 << endl;
        else cout << cs[i] << endl;
    }
    return 0;
}

void kereso(int elozo)
{
    for (int i=0;i<szamlalo[elozo];i++)
    {
        holtart[utak[i][elozo][0]]++;
        if (cs[elozo]<utak[i][elozo][1] and elozo!=csomo-1)
        {
            if (cs[utak[i][elozo][0]]<=cs[elozo])
            {
                cs[utak[i][elozo][0]]=cs[elozo];
            }
        }
        else
        {
            if (cs[utak[i][elozo][0]]<=utak[i][elozo][1])
            {
                cs[utak[i][elozo][0]]=utak[i][elozo][1];
            }
        }
    }
}





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

5 1 1 1
1 2 3
*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base4/50
1Elfogadva0/02ms1932 KiB
2Hibás válasz0/02ms2108 KiB
3Elfogadva1/11ms1996 KiB
4Hibás válasz0/11ms1980 KiB
5Hibás válasz0/22ms2048 KiB
6Hibás válasz0/22ms2084 KiB
7Hibás válasz0/22ms2236 KiB
8Hibás válasz0/22ms2288 KiB
9Hibás válasz0/14ms2296 KiB
10Hibás válasz0/19ms2392 KiB
11Elfogadva1/121ms2616 KiB
12Hibás válasz0/118ms2828 KiB
13Hibás válasz0/220ms2712 KiB
14Hibás válasz0/225ms2880 KiB
15Hibás válasz0/278ms3364 KiB
16Hibás válasz0/252ms3468 KiB
17Hibás válasz0/263ms3576 KiB
18Hibás válasz0/2104ms3756 KiB
19Hibás válasz0/276ms3900 KiB
20Hibás válasz0/275ms3980 KiB
21Elfogadva1/1261ms5144 KiB
22Hibás válasz0/1419ms5656 KiB
23Elfogadva1/1488ms6208 KiB
24Időlimit túllépés0/1566ms4316 KiB
25Időlimit túllépés0/2563ms4724 KiB
26Időlimit túllépés0/2560ms4988 KiB
27Időlimit túllépés0/2593ms5148 KiB
28Futási hiba0/24ms6200 KiB
29Futási hiba0/24ms5200 KiB
30Futási hiba0/24ms5468 KiB
31Futási hiba0/24ms5732 KiB
32Futási hiba0/24ms6144 KiB