67612023-12-18 21:43:18111Villanyautócpp17Hibás válasz 17/60216ms4596 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
base17/60
1Hibás válasz0/03ms1824 KiB
2Elfogadva0/089ms2424 KiB
3Hibás válasz0/120ms2292 KiB
4Hibás válasz0/137ms2684 KiB
5Hibás válasz0/141ms2736 KiB
6Hibás válasz0/294ms2952 KiB
7Hibás válasz0/2152ms3000 KiB
8Hibás válasz0/2216ms3332 KiB
9Hibás válasz0/114ms3040 KiB
10Elfogadva1/18ms3184 KiB
11Elfogadva1/16ms3416 KiB
12Elfogadva2/256ms3636 KiB
13Hibás válasz0/241ms3832 KiB
14Elfogadva2/217ms3928 KiB
15Hibás válasz0/345ms4152 KiB
16Elfogadva3/368ms4196 KiB
17Hibás válasz0/210ms4288 KiB
18Hibás válasz0/237ms4432 KiB
19Hibás válasz0/237ms4476 KiB
20Hibás válasz0/243ms4476 KiB
21Elfogadva2/225ms4372 KiB
22Hibás válasz0/210ms4240 KiB
23Hibás válasz0/348ms4240 KiB
24Hibás válasz0/3138ms4468 KiB
25Hibás válasz0/3143ms4420 KiB
26Hibás válasz0/3187ms4596 KiB
27Elfogadva3/3100ms4380 KiB
28Hibás válasz0/352ms4196 KiB
29Hibás válasz0/345ms4416 KiB
30Elfogadva3/350ms4416 KiB