제출 #1217389

#제출 시각아이디문제언어결과실행 시간메모리
1217389fast봉쇄 시간 (IOI23_closing)C++20
0 / 100
61 ms17220 KiB
#include "closing.h"
#include "bits/stdc++.h"
using namespace std;
#define vec vector

int max_score(int N, int X, int Y, long long K, vec<int> U, vec<int> V,
			  vec<int> W) {
	vec<vec<pair<int, int>>> adj(N);
	for (int i = 0; i < N - 1; i++) {
		adj[U[i]].push_back({V[i], W[i]});
		adj[V[i]].push_back({U[i], W[i]});
	}
	vec<char> vis(N);
	priority_queue<pair<long long, int>, vec<pair<long long, int>>,
				   greater<pair<long long, int>>>
		pq;
	vis[X] = 1;
	vis[Y] = 1;
	int cnt = 2;
	long long used = 0;
	for (auto &e : adj[X])
		if (!vis[e.first])
			pq.push({e.second, e.first});
	for (auto &e : adj[Y])
		if (!vis[e.first])
			pq.push({e.second, e.first});
	while (!pq.empty()) {
		auto [w, node] = pq.top();
		pq.pop();
		if (vis[node])
			continue;
		if (used + w > K)
			break;
		used += w;
		vis[node] = 1;
		cnt++;
		for (auto &ne : adj[node])
			if (!vis[ne.first])
				pq.push({ne.second, ne.first});
	}
	return cnt;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...