Submission #696901

#TimeUsernameProblemLanguageResultExecution timeMemory
696901Do_you_copyAutobus (COCI22_autobus)C++17
70 / 70
437 ms23116 KiB
//Then #include <bits/stdc++.h> #define pb push_back #define fi first #define se second #define faster ios_base::sync_with_stdio(0); cin.tie(0); #define int long long using namespace std; using ll = long long; using ld = long double; using pii = pair <int, int>; mt19937_64 Rand(chrono::steady_clock::now().time_since_epoch().count()); const int maxN = 80 + 1; //const int Mod = 1e9 + 7; const ll inf = 0x3f3f3f3f3f3f3f3f; int n, k, q, m; int c[maxN][maxN]; struct TEdge{ int u, i, w; }; struct TPQ{ int lab, u, i; bool operator < (const TPQ &other) const{ return lab > other.lab; } }; vector <TEdge> adj[maxN][maxN]; ll d[maxN][maxN][maxN]; void Dijkstra(int s){ memset(d[s], 0x3f, sizeof(d[s])); priority_queue <TPQ> PQ; d[s][s][0] = 0; PQ.push({0, s, 0}); while (!PQ.empty()){ auto r = PQ.top(); PQ.pop(); if (d[s][r.u][r.i] != r.lab) continue; for (auto i: adj[r.u][r.i]){ if (d[s][i.u][i.i] > d[s][r.u][r.i] + i.w){ d[s][i.u][i.i] = d[s][r.u][r.i] + i.w; PQ.push({d[s][i.u][i.i], i.u, i.i}); } } } for (int i = 1; i <= n; ++i){ for (int j = 1; j <= n; ++j){ d[s][i][j] = min(d[s][i][j], d[s][i][j - 1]); } } } void Init(){ cin >> n >> m; memset(c, 0x3f, sizeof(c)); for(int i = 1; i <= m; ++i){ int u, v, w; cin >> u >> v >> w; c[u][v] = min(c[u][v], w); } cin >> k >> q; k = min(k, n); for (int i = 1; i <= n; ++i){ for (int j = 1; j <= n; ++j){ if (c[i][j] == inf) continue; for (int l = 0; l < n; ++l){ adj[i][l].pb({j, l + 1, c[i][j]}); } } } for (int i = 1; i <= n; ++i){ Dijkstra(i); } while (q--){ int u, v; cin >> u >> v; cout << (d[u][v][k] == inf ? -1 : d[u][v][k]) << "\n"; } } #define debug #define taskname "test" signed main(){ faster if (fopen(taskname".inp", "r")){ freopen(taskname".inp", "r", stdin); freopen(taskname".out", "w", stdout); } int tt = 1; //cin >> tt; while (tt--){ Init(); } if (fopen("timeout.txt", "r")){ ofstream timeout("timeout.txt"); timeout << signed(double(clock()) / CLOCKS_PER_SEC * 1000); timeout.close(); #ifndef debug cerr << "Time elapsed: " << signed(double(clock()) / CLOCKS_PER_SEC * 1000) << "ms\n"; #endif // debug } }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:88:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   88 |         freopen(taskname".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:89:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   89 |         freopen(taskname".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...