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

Compiler report

input/code.cpp: In function 'std::vector<std::__cxx11::basic_string<char> > split(std::string, int)':
input/code.cpp:59:9: error: declaration of 'int pituus' shadows a parameter
   59 |     int pituus = teksti.length();
      |         ^~~~~~
input/code.cpp:54:41: note: 'int pituus' previously declared here
   54 | vector<string> split(string teksti, int pituus)
      |                                     ~~~~^~~~~~

Code

#include <bits/stdc++.h>
#include <utility>
using namespace std;
class Kaupunki
{
public:
bool pelto;
int satamaan;
vector<pair<Kaupunki, int>> naapurit;
Kaupunki()
{
pelto = false;
satamaan = 0x7FFFFFFF;
}
void lisaaNaapuri(Kaupunki itse, 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);
}
}
}
pair<Kaupunki, int> polku = pair(kaupunki, etaisyys);
naapurit.push_back(polku);
if (takaisin)
kaupunki.lisaaNaapuri(kaupunki, itse, 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(string teksti, int pituus)
{
vector<string> jaettu(pituus);
string osa;
int pituus = teksti.length();
for (int i = 0; i < pituus; i++)
{
char nykyinen = teksti[i];
if (nykyinen == ' ')
{
jaettu.push_back(osa);
osa = "";
}
else
{
osa += nykyinen;
}
}
jaettu.push_back(osa);
return jaettu;
}
int main()
{
int n;
std::cin >> n;
string pellotRaw;
cin >> pellotRaw;
Kaupunki kaupungit[n];
string onko;
cin >> onko;
vector<string> satamat = split(onko, n);
for (int i = 0; i < n; i++)
{
kaupungit[i] = Kaupunki();
kaupungit[i].pelto = satamat.at(i)[0] == '1';
}
for (int i = 0; i < n - 1; i++)
{
string matkat;
cin >> matkat;
vector<string> syote = split(matkat, 3);
int kaupunki1Id = stoi(syote.at(0)) - 1;
int kaupunki2Id = stoi(syote[1]) - 1;
kaupungit[kaupunki1Id].lisaaNaapuri(kaupungit[kaupunki1Id], kaupungit[kaupunki2Id], stoi(syote[2]), true);
}
int yhteensa = 0;
for (int i = 0; i < n; i++)
{
yhteensa += kaupungit[i].satamaan;
}
cout << yhteensa;
}