| Task: | Tietoverkko |
| Sender: | tassu |
| Submission time: | 2021-10-05 17:45:05 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | WRONG ANSWER | 0 |
| #2 | WRONG ANSWER | 0 |
| #3 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | WRONG ANSWER | 0.01 s | 1, 2, 3 | details |
| #2 | TIME LIMIT EXCEEDED | -- | 2, 3 | details |
| #3 | RUNTIME ERROR | 0.36 s | 3 | details |
Compiler report
input/code.cpp: In function 'int find_next(const std::vector<int>&, const std::vector<int>&)':
input/code.cpp:10:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int key = 0; key < unvisited.size(); key++) {
~~~~^~~~~~~~~~~~~~~~~~
input/code.cpp: In function 'int speeds_for(int, std::vector<std::vector<int> >, int)':
input/code.cpp:46:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int j = 0; j < unvisited.size(); j++) {
~~^~~~~~~~~~~~~~~~~~
input/code.cpp: In function 'int find_next(const std::vector<int>&, const std::vector<int>&)':
input/code.cpp:15:12: warning: 'smallest_key' may be used uninitialized in this function [-Wmaybe-uninitialized]
return smallest_key;
^~~~~~~~~~~~
input/code.cpp: In function 'int speeds_for(int, std::vector<std::vector<int> >, int)':
input/code.cpp:59:17: warning: 'smallest_key' may be u...Code
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int find_next(const vector<int>& unvisited, const vector<int>& distances) {
int smallest_key;
int smallest_value = (int)INFINITY;
for (int key = 0; key < unvisited.size(); key++) {
if (distances[key] < smallest_value) {
smallest_key = key;
}
}
return smallest_key;
}
int speeds_for(int l, vector<vector<int>> speeds_lookup, int starting_location) {
int total_speed = 0;
vector<int> speeds(l);
vector<int> distances(l);
for (int t = 0; t < l; t++) {
speeds[t] = (int)INFINITY;
if (t == starting_location) {
distances[t] = (int)INFINITY;
} else {
distances[t] = 0;
}
}
vector<int> unvisited = vector<int>(l);
iota(unvisited.begin(), unvisited.end(), 0);
unvisited.erase(remove(unvisited.begin(), unvisited.end(), starting_location), unvisited.end());
int current = starting_location;
int current_distance, current_speed, speed_to_here, min_speed;
for (int c = 0; c < l; c++) {
current_distance = distances[current];
current_speed = speeds[current];
for (int j = 0; j < unvisited.size(); j++) {
speed_to_here = speeds_lookup[j][current];
if (speed_to_here == 0) {
continue;
}
min_speed = min(speed_to_here, current_speed);
speeds[j] = min_speed;
total_speed += min_speed;
distances[j] = current_distance + 1;
}
current = find_next(unvisited, distances);
unvisited.erase(remove(unvisited.begin(), unvisited.end(), current), unvisited.end());
}
return total_speed;
}
int main() {
int l;
cin >> l;
int a, b, x;
vector<vector<int>> speeds(l);
for (int i = 0; i < l; i++) {
speeds[i] = vector<int>(l);
for (int j = 0; j < l; j++) {
speeds[i][j] = 0;
}
}
for (int i = 1; i < l; i++) {
cin >> a >> b >> x;
speeds[a - 1][b - 1] = x;
speeds[b - 1][a - 1] = x;
}
int speeds_total = 0;
for (int i = 0; i < l; i++) {
speeds_total += speeds_for(l, speeds, i);
}
cout << (speeds_total / 2) << "\n";
return 0;
}
Test details
Test 1
Group: 1, 2, 3
Verdict: WRONG ANSWER
| input |
|---|
| 100 1 2 74 1 3 100 2 4 50 3 5 40 ... |
| correct output |
|---|
| 88687 |
| user output |
|---|
| 185949 |
Test 2
Group: 2, 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 5000 1 2 613084013 1 3 832364259 2 4 411999902 3 5 989696303 ... |
| correct output |
|---|
| 1103702320243776 |
| user output |
|---|
| (empty) |
Test 3
Group: 3
Verdict: RUNTIME ERROR
| input |
|---|
| 200000 1 2 613084013 1 3 832364259 2 4 411999902 3 5 989696303 ... |
| correct output |
|---|
| 1080549209850010931 |
| user output |
|---|
| (empty) |
