Submission #834180

#TimeUsernameProblemLanguageResultExecution timeMemory
834180LiudasAesthetic (NOI20_aesthetic)C++17
20 / 100
2075 ms35236 KiB
#include <iostream> #include <vector> #include <set> #include <queue> #include <algorithm> #define int long long using namespace std; vector<int> path, fpath; void DFS(int head, int par, vector<vector<pair<int, int>>> &tree){ if(head == tree.size()-1){ fpath = path; return; } for(auto[l, r] : tree[head]){ if(l != par){ path.push_back(r); DFS(l, head, tree); path.pop_back(); } } } signed main(){ int N, M; cin >> N >> M; vector<vector<pair<int, int>>> tree(N); vector<int> vals(M); for(int i = 0; i < M; i ++){ int a, b, c; cin >> a >> b >> c; a--; b--; tree[a].push_back({b,i}); tree[b].push_back({a,i}); vals[i] = c; } if(M == N - 1){ vector<int> maxsuff(N); for(int i = N-2; i >= 0; i --){ maxsuff[i] = max(vals[i+1], maxsuff[i+1]); } DFS(0, -1, tree); int ans = 0; for(int i : fpath){ ans = max(ans, maxsuff[i]); } for(int i : fpath){ ans += vals[i]; } cout << ans << endl; } else{ int an = 0; for(int i = 0; i < M-1; i ++){ int tval = *max_element(vals.begin()+i+1, vals.end()); vals[i] += tval; priority_queue<vector<int>> que; que.push({0,0}); int ans = 0; vector<bool> vis(N); while(!que.empty()){ int a = -que.top()[0], b = que.top()[1]; que.pop(); if(b == N-1){ans = a; break;} if(vis[b])continue; vis[b] = true; for(auto [l, r] : tree[b]){ que.push({-a-vals[r], l}); } } an = max(an, ans); vals[i] -= tval; } cout << an << endl; } return 0; }

Compilation message (stderr)

Aesthetic.cpp: In function 'void DFS(long long int, long long int, std::vector<std::vector<std::pair<long long int, long long int> > >&)':
Aesthetic.cpp:10:13: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |     if(head == tree.size()-1){
      |        ~~~~~^~~~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...