Submission #1115412

#TimeUsernameProblemLanguageResultExecution timeMemory
1115412staszic_ojuzCommuter Pass (JOI18_commuter_pass)C++17
0 / 100
2035 ms262144 KiB
#include <iostream> #include <algorithm> #include <cmath> #include <queue> #include <vector> #include <stack> #include <unordered_map> using namespace std; typedef long long ll; struct path { vector<ll> way; ll cost; ll v; path(){} path(ll cost): cost(cost){} }; bool operator>(path a, path b) { return a.cost > b.cost; } path dijkstra(ll start, ll end, vector<vector<pair<ll, ll>>> graf) { ll n = graf.size() - 1; vector<bool> vis(n + 1); vector<path> odw(n + 1, path(-1)); priority_queue<path, vector<path>, greater<path>> q; path p; p.v = start; p.cost = 0; p.way = {}; q.push(p); while(!q.empty()) { path el = q.top(); q.pop(); vis[el.v] = true; for(pair<ll, ll> sas : graf[el.v]) { if(vis[sas.first]) continue; path n; n.cost = sas.second; n.v = sas.first; n.way = el.way; n.way.push_back(el.v); q.push(n); odw[n.v].cost = el.cost + sas.second; odw[n.v].way = el.way; odw[n.v].way.push_back(el.v); } } return odw[end]; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll n, m; cin >> n >> m; ll s, t; cin >> s >> t; ll u, v; cin >> u >> v; vector<vector<pair<ll,ll>>> graf(n + 1); for(int i = 0; i < m; i++) { ll a, b, c; cin >> a >> b >> c; graf[a].push_back({b, c}); graf[b].push_back({a, c}); } vector<ll> stway = dijkstra(s, t, graf).way; vector<pair<ll, ll>> kraw0; for(int i = 0; i < n - 1; i++) { kraw0.push_back({stway[i], stway[i + 1]}); } for(int x = 0; x < n; x++) { for(int y = 0; y < graf[x].size(); y++) { for(pair<ll, ll> p : kraw0) { if (p.first == x && p.second == graf[x][y].first) { graf[x][y].second = 0; } else if(p.second == x && p.first == graf[x][y].first) { graf[x][y].second = 0; } } } } ll w = dijkstra(u, v, graf).cost; cout << w; return 0; }

Compilation message (stderr)

commuter_pass.cpp: In function 'int main()':
commuter_pass.cpp:78:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |         for(int y = 0; y < graf[x].size(); y++) {
      |                        ~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...