真的不知道为什么会MLE QAQ
请问有神仙们帮我看看吗 /kel
int n, m, pre[100010], nxt[100010], t, ans[100010];
map < pair < int , int > , bool > edge;
int main() {
n = read(), m = read();
for(int i = 1; i <= m; i++) {
int u = read(), v = read();
edge[{u, v}] = edge[{v, u}] = 1;
}
for(int i = 1; i <= n; i++) pre[i] = i - 1, nxt[i] = i + 1;
nxt[0] = 1; pre[n + 1] = n;
queue < int > q;
while(nxt[0] != n + 1) {
int cnt = 1;
q.push(nxt[0]);
nxt[0] = nxt[nxt[0]];
pre[nxt[0]] = 0;
while(!q.empty()) {
int k = q.front(); q.pop();
int now = nxt[0];
while(now != n + 1) {
if(!edge[{k, now}]) {
pre[nxt[now]] = pre[now];
nxt[pre[now]] = nxt[now];
q.push(now), cnt++;
}
now = nxt[now];
}
}
ans[++t] = cnt;
}
sort(ans + 1, ans + t + 1);
write(t), puts("");
for(int i = 1; i <= t; i++) write(ans[i]), putchar(' ');
return 0;
}