Submission #1230824

#TimeUsernameProblemLanguageResultExecution timeMemory
1230824ttamxTravelling Merchant (CCO21_day2problem1)C++20
0 / 25
84 ms14660 KiB
#include<bits/stdc++.h> using namespace std; int main(){ cin.tie(nullptr)->sync_with_stdio(false); int n,m; cin >> n >> m; vector<tuple<int,int,int,int>> edges(m); vector<vector<int>> adj(n); vector<int> deg(n); for(int i=0;i<m;i++){ auto &[u,v,r,p]=edges[i]; cin >> u >> v >> r >> p; u--,v--; adj[v].emplace_back(i); deg[u]++; } vector<int> ans(n,-1); vector<bool> vis(n); queue<int> q; for(int i=0;i<n;i++){ if(deg[i]==0){ q.emplace(i); } } while(!q.empty()){ int u=q.front(); q.pop(); for(auto i:adj[u]){ vis[i]=true; int v=get<0>(edges[i]); if(--deg[v]==0){ q.emplace(v); } } } priority_queue<pair<int,int>> pq; for(int i=0;i<m;i++){ if(!vis[i]){ pq.emplace(get<2>(edges[i]),i); } } while(!pq.empty()){ auto [d,i]=pq.top(); pq.pop(); if(vis[i])continue; vis[i]=true; int u=get<0>(edges[i]); if(--deg[u]==0){ ans[u]=d; for(auto j:adj[u]){ auto [v,_,r,p]=edges[j]; pq.emplace(d-p,j); } } } for(auto x:ans){ cout << x << " "; } cout << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...