记录编号 601827 评测结果 AAAAAAAAAA
题目名称 3097.[POJ 1456]超市 最终得分 100
用户昵称 GravatarOTTF 是否通过 通过
代码语言 C++ 运行时间 0.771 s
提交时间 2025-06-29 08:47:45 内存使用 3.82 MiB
显示代码纯文本

#include <algorithm>
#include <iostream>
#include <utility>

using namespace std;

constexpr int N = 114514;

int n;
pair<int, int> nums[N];
int dad[N];
int res;

int find (int now) {
	if (now == dad[now]) {
		return now;
	}
	return dad[now] =  find (dad[now]);
}

int main () {
	
	while (cin >> n) {
		for (int i = 1; i <= n; i++) {
			cin >> nums[i].first >> nums[i].second;
		}
		sort (nums + 1, nums + 1 + n);
		for (int i = 1; i <= 10000; i++) {
			dad[i] = i;
		}
		res = 0;
		for (int i = n; i >= 1; i--) {
			int t = find (nums[i].second);
			if (t) {
				res += nums[i].first;
				dad[t] = t - 1;
			}
		}
		cout << res << endl;
	}
	
	return 0;
}