#include<algorithm>
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
struct node{
int day,cost;
};
priority_queue<int,vector<int>,greater<int>> que;
node data[10001];
int father[10001];
inline bool compare(node first,node second){
return first.cost>second.cost;
};
inline int get(int son){
if(father[son]==son){
return son;
};
return father[son]=get(father[son]);
};
int main(int argc,char **argv){
int size;
while(scanf("%d",&size)!=EOF){
int answer=0;
for(int iter=1;iter<10001;++iter){
father[iter]=iter;
};
for(int iter=1;iter<=size;++iter){
scanf("%d %d",&data[iter].cost,&data[iter].day);
};
sort(data+1,data+1+size,compare);
for(int iter=1;iter<=size;++iter){
int now=get(data[iter].day);
if(now){
answer+=data[iter].cost;
father[now]=now-1;
};
};
printf("%d\n",answer);
};
return 0;
};
总是第一个点就 TLE,请求 DEBUG