Submission #1132328

#TimeUsernameProblemLanguageResultExecution timeMemory
1132328Ak_16Training (IOI07_training)C++20
0 / 100
3 ms836 KiB
#include <iostream> #include <vector> #include <utility> using namespace std; int pos[5000]; int pla[5000]; int cur; int vis[5000]; int n,m; vector<int> adj1[5000]; vector<pair<int, int>> adj2[5000]; int dp[5000]; int cnt[5000]; void dfs1(int no){ vis[no]=1; pos[no] = cur; pla[cur] = no; cur++; for(auto x : adj1[no]){ if(vis[x]==0){ dfs1(x); } } } int main() { cin>>n>>m; cur=1; dp[0] = 0; for(int i=0; i<=4000; i++){cnt[i]=0; vis[i]=0;} int cost = 0; int u,v,w; for(int i=1; i<=m; i++){ cin>>u>>v>>w; cost += w; if(w==0){adj1[u].push_back(v); adj1[v].push_back(u); cnt[u]++; cnt[v]++;} else { adj2[u].emplace_back(v, w); adj2[v].emplace_back(u, w); } } for(int i=1; i<=n; i++){ if(cnt[i]==1){ dfs1(i); break;} } for(int i=1; i<=n; i++){ dp[i] = dp[i-1]; for(auto edge : adj2[i]){ if(edge.first<i){ dp[i] = max(dp[i], edge.second + dp[edge.first]); } } } cout<<cost-dp[n]; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...