题目传送门:https://www.luogu.org/problemnew/show/P3524
大意:给一个$N$个点的图,其中一定有一个大小为$\frac{2}{3}N$的团,程序需给出一个大小为$\frac{N}{3}$的团。$N \leq 3000,N \% 3 = 0$
所以这道题还是比较水?
考虑将没有连边的两个点同时删去,那么最坏情况是每一次删除团内一个点被误删,那么最多有$\frac{N}{3}$个点被误删,剩下的最少$\frac{N}{3}$个点就是留下的团了
#include<bits/stdc++.h> #define MAXN 3010 using namespace std; bool vis[MAXN] , hEd[MAXN][MAXN]; int main(){ ios::sync_with_stdio(); cin.tie(); cout.tie(); int N , M; cin >> N >> M; ; i <= M ; i++){ int a , b; cin >> a >> b; hEd[a][b] = hEd[b][a] = ; } ; ; i <= N && cnt < N / ; i++){ if(vis[i]) continue; ; ; f && j <= N ; j++) if(!vis[j] && !hEd[i][j]){ vis[i] = vis[j] = ; f = ; } if(f){ cnt++; cout << i << ' '; } } ; }