67622023-12-18 21:45:01111Villanyautócpp17Hibás válasz 11/60216ms4904 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define double long double

#define pii pair<int, int>

template<typename T>
using min_priority_queue = std::priority_queue<T, vector<T>, greater<T>>;

template<typename T, typename U>
bool ckmin(T& a, const U& b) {
	return b < a ? a = b, true : false;
}

#define A (int)1e15
#define B (int)1e18

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
#ifdef CB
	freopen("be2.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
#endif
	int N, M, K;
	cin >> N >> M >> K;
	vector<vector<pii>> g(N + 1);
	for (int i = 0; i < M; i++) {
		int a, b, c;
		cin >> a >> b >> c;
		g[a].push_back({b, c});
		g[b].push_back({a, c});
	}
	int l = 0, h = A;
	while (l < h) {
		int m = (l + h) / 2;
		// m possible?
		bool ok = true;
		for (int i = 1; i <= N; i++) {
			vector<int> v(N + 1, B);
			min_priority_queue<pii> pq;
			pq.emplace(0, i);
			v[i] = 0;
			while (!pq.empty()) {
				auto j = pq.top();
				pq.pop();
				if (j.first > v[j.second]) {
					continue;
				}
				for (pii p : g[j.second]) {
					int c = v[j.second] + p.second;
					if (p.second > m) {
						continue;
					}
					if (c % A > m) {
						c -= c % A;
						c += A + p.second;
					}
					if (ckmin(v[p.first], c)) {
						pq.emplace(v[p.first], p.first);
					}
				}
			}
			for (int j = 1; j <= N; j++) {
				if (v[j] / A > K) {
					goto bad;
				}
			}
		}
		if (ok) {
			h = m;
		}
		else {
		bad:
			l = m + 1;
		}
	}
	cout << l << '\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base11/60
1Elfogadva0/03ms1824 KiB
2Elfogadva0/087ms2236 KiB
3Hibás válasz0/120ms2240 KiB
4Hibás válasz0/137ms2636 KiB
5Hibás válasz0/141ms2876 KiB
6Hibás válasz0/294ms3040 KiB
7Hibás válasz0/2153ms3216 KiB
8Hibás válasz0/2216ms3644 KiB
9Elfogadva1/116ms3408 KiB
10Hibás válasz0/18ms3612 KiB
11Hibás válasz0/16ms3696 KiB
12Hibás válasz0/257ms3988 KiB
13Elfogadva2/241ms3844 KiB
14Hibás válasz0/218ms3984 KiB
15Hibás válasz0/345ms4108 KiB
16Hibás válasz0/367ms4520 KiB
17Hibás válasz0/210ms4532 KiB
18Hibás válasz0/237ms4688 KiB
19Hibás válasz0/237ms4700 KiB
20Hibás válasz0/243ms4596 KiB
21Elfogadva2/225ms4692 KiB
22Hibás válasz0/29ms4604 KiB
23Hibás válasz0/345ms4608 KiB
24Hibás válasz0/3138ms4540 KiB
25Hibás válasz0/3142ms4556 KiB
26Hibás válasz0/3187ms4904 KiB
27Elfogadva3/3100ms4552 KiB
28Hibás válasz0/354ms4496 KiB
29Hibás válasz0/343ms4560 KiB
30Elfogadva3/350ms4688 KiB