#include<iostream>
#include<algorithm>
using namespace std;
struct box{
long long p, c;
bool f;
} a[10100];
int b[10100];
long long n, m, maxs = 0, s = 0;
bool cmp(box x, box y){
return x.c < y.c;
}
void find(){
for(int i = 1;i <= m;i ++){
if(!a[i].f && a[i].p != 1){
s += a[i].c;
b[maxs] --;
b[1] ++;
a[i].f = 1;
break;
}
}
}
int main() {
cin >> n >> m;
for(int i = 1;i <= m;i ++){
cin >> a[i].p >> a[i].c;
b[a[i].p] ++;
if(b[a[i].p] > b[maxs]){
maxs = a[i].p;
}
}
sort(a + 1, a + m + 1, cmp);
while(maxs != 1){
find();
for(int i = 1;i <= n;i ++){
if(b[i] > b[maxs]){
maxs = i;
}
}
}
cout << s;
return 0;
}
用结构体模拟了一下,s1错1,s2对3,s3对1