#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAXN 10010
struct node
{
int p, d;
}list[MAXN];
int fa[MAXN];
bool cmp(node a, node b)
{
if(a.p != b.p)
return a.p < b.p;
return a.d < b.d;
}
int findfa(int x)
{
if(fa[x] == x) return x;
return fa[x] = findfa(fa[x]);
}
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
int maxn = 0;
for(int i = 0; i < n; i++)
{
scanf("%d %d",&list[i].p, &list[i].d);
maxn = max(maxn, list[i].d);
}
for( int i = 0; i <= maxn; i++)
fa[i] = i;
sort(list, list + n, cmp);
int ans = 0;
for( int i = n-1; i >= 0; i--)
{
int fax = findfa(list[i].d);
if(fax > 0)
{
ans += list[i].p;
fa[fax] --;
}
}
printf("%d\n",ans);
}
return 0;
}
Supermarket
最新推荐文章于 2019-05-24 23:08:48 发布