CSES - DatatÃ¤hti 2022 alku - Results
 Task: Tietoverkko (Network) Sender: jmarttinen Submission time: 2021-10-08 09:59:43 Language: C++11 Status: READY Result: 25
Feedback
groupverdictscore
#1ACCEPTED10
#2ACCEPTED15
#30
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2, 3details
#2ACCEPTED0.59 s2, 3details
#3--3details

### Code

```#include <algorithm>
#include <iostream>
#include <map>
#include <set>
#include <vector>

using namespace std;

vector<pair<int, pair<int,int>>> network;
map<int, set<int>> graph;

long search(int node, int ignoredNode) {
if (graph[node].size() <= 1) {
return 1;
}
long s = 1;

for (auto n : graph[node]) {
if (n == ignoredNode) {
continue;
}
s += search(n, node);
}
return s;
}

int main() {
int n, a, b, d;
long s = 0;

cin >> n;
for (int i=1; i<n; i++) {
graph[i] = set<int>();
}
for (int i=0; i<n-1; i++) {
cin >> a >> b >> d;
graph[a].insert(b);
graph[b].insert(a);
network.push_back(pair<int, pair<int,int>>(d, pair<int,int>(a,b)));
}
sort(network.begin(), network.end());

long l, r;
for (auto edge: network) {
l = 1, r = 1;
d = edge.first;
a = edge.second.first, b = edge.second.second;
graph[a].erase(b);
graph[b].erase(a);
for (auto node: graph[a]) {
l += search(node, a);
}
for (auto node: graph[b]) {
r += search(node, b);
}
s += l*r*d;
}
cout << s;
}```

### Test details

#### Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
100
1 2 74
1 3 100
2 4 50
3 5 40
...

correct output
88687

user output
88687

#### Test 2

Group: 2, 3

Verdict: ACCEPTED

input
5000
1 2 613084013
1 3 832364259
2 4 411999902
3 5 989696303
...

correct output
1103702320243776

user output
1103702320243776

#### Test 3

Group: 3

Verdict:

input
200000
1 2 613084013
1 3 832364259
2 4 411999902
3 5 989696303
...

correct output
1080549209850010931

user output
(empty)