Submission #1326788

#TimeUsernameProblemLanguageResultExecution timeMemory
1326788GabrielTravelling Trader (CCO23_day2problem2)C++20
2 / 25
167 ms40216 KiB
#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; Hay = n; cout<<m<<"\n"<<n<<"\n"; n = Tour.size(); int c = 0; for(int i = 0; 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...