#include "bits/stdc++.h"
using namespace std;
vector< vector<long long> > Grafo;
vector<long long> v, d, a;
vector<int> Final, Tour;
int Hay;
void DFS(int Nodo){
//cerr<<Nodo<<"\n";
Hay--;
Final[Nodo] = Tour.size();
Tour.push_back(Nodo);
if(Hay == 0) return;
for(auto E: Grafo[Nodo]){
if(Hay == 0) return;
//cerr<<Nodo<<" "<<E<<"\n";
if(d[E] > d[Nodo] + v[E]){
d[E] = d[Nodo] + v[E];
DFS(E);
a[E] = Nodo;
Final[Nodo] = Tour.size();
Tour.push_back(Nodo);
}
}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, k;
long long m = 0;
cin>>n>>k;
Grafo.assign(n, {});
v.assign(n, 0);
d.assign(n, 2222222222222222);
a.assign(n, -2);
Final.assign(n, 0);
Hay = n;
for(int i = 0; i < n - 1; i++){
int a, b;
cin>>a>>b;
a--;
b--;
Grafo[a].push_back(b);
Grafo[b].push_back(a);
}
for(int i = 0; i < n; i++){
cin>>v[i];
m += v[i];
}
if(k == 1){
d[0] = v[0];
DFS(0);
int p = 0;
m = 0;
for(int i = 0; i < n; i++){
if(d[i] > m){
m = d[i];
p = i;
}
}
vector<int> r;
cout<<m<<"\n";
while(p != -2){
r.push_back(p);
p = a[p];
}
reverse(r.begin(), r.end());
cout<<r.size()<<"\n";
for(auto E: r) cout<<E + 1<<" ";
return 0;
}
if(k == 3){
d[0] = v[0];
DFS(0);
vector<int> r;
bitset<222222> Visitados;
Visitados[0] = 1;
r.push_back(0);
Hay = n;
cout<<m<<"\n"<<n<<"\n";
n = Tour.size();
int c = 0;
for(int i = 1; i < n and Hay > 0; i++){
if(i == Final[Tour[i]] and !Visitados[Tour[i]]){
c = 0;
r.push_back(Tour[i]);
Visitados[Tour[i]] = 1;
Hay--;
} else if(c == 2){
c = 0;
r.push_back(Tour[i]);
Visitados[Tour[i]] = 1;
Hay--;
} else c++;
}
for(auto E: r) cout<<E + 1<<" ";
return 0;
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |