CSES - Datatähti 2023 alku - Results
Submission details
Task:Sadonkorjuu
Sender:adex720
Submission time:2022-11-12 22:36:42 +0200
Language:C++ (C++11)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In member function 'void Kaupunki::lisaaNaapuri(Kaupunki, int, bool)':
input/code.cpp:39:32: error: missing template arguments before '(' token
   39 |         naapurit.push_back(pair(kaupunki, etaisyys));
      |                                ^

Code

#include <bits/stdc++.h>
#include <utility>
using namespace std;

class Kaupunki
{
public:
    bool pelto;
    int satamaan;

    vector<pair<Kaupunki, int>> naapurit;

    Kaupunki(){

    };

    Kaupunki(bool onkoPelto)
    {
        pelto = onkoPelto;
    };

    void lisaaNaapuri(Kaupunki kaupunki, int etaisyys, bool takaisin)
    {
        if (pelto)
        {
            int matkaSatamaan = kaupunki.satamaan != 0x7FFFFFFF ? kaupunki.satamaan + etaisyys : 0x7FFFFFFF;
            if (matkaSatamaan < satamaan)
            {
                satamaan = matkaSatamaan;
                for (pair<Kaupunki, int> polku : naapurit)
                {
                    int pituus = matkaSatamaan + polku.second;
                    if (polku.first.satamaan > pituus)
                        polku.first.paivitaEtaisyysSatamaan(pituus);
                }
            }
        }

        naapurit.push_back(pair(kaupunki, etaisyys));
        if (takaisin)
            kaupunki.lisaaNaapuri(this, etaisyys, false);
    }

    void paivitaEtaisyysSatamaan(int etaisyys)
    {
        satamaan = etaisyys;
        for (pair<Kaupunki, int> yhteys : naapurit)
        {
            int pituus = etaisyys + yhteys.second;
            if (yhteys.first.satamaan > pituus)
                yhteys.first.paivitaEtaisyysSatamaan(pituus);
        }
    }
};

vector<string> split(const string &s, char delim)
{
    vector<string> result;
    stringstream ss(s);
    string item;

    while (getline(ss, item, delim))
    {
        result.push_back(item);
    }

    return result;
}

int main()
{
    int n;
    std::cin >> n;

    string pellotRaw;
    cin >> pellotRaw;

    Kaupunki kaupungit[n];

    for (int i = 0; i < n - 1; i++)
    {
        string matkat;
        cin >> matkat;

        vector<string> syote = split(matkat, ' ');
        int kaupunki1Id = stoi(syote.at(0)) - 1;
        int kaupunki2Id = stoi(syote[1]) - 1;
        kaupungit[kaupunki1Id].lisaaNaapuri(kaupungit[kaupunki2Id], stoi(syote[2]), true);
    }
}