2019牛客多校第二场 D Kth Minimum Clique

暴力bfs,搞个优先队列每次取出当前的最小值的团,bitset维护当前团有哪些点,

那么要新增一个点的时候,要保证新增点与在当前团中所有点都有两边,直接bitset &  一下判断

复杂度大概是 k*O(bitset<100>)*log(堆大小)。

由于bitset是常数级别的所以klog(堆大小)

在新增点的时候要保证新增的点的序号在当前团的最后一个点之后,这样才能保证不重复

#include
#define maxl 110
using namespace std;

int n,k;
long long ans;
long long a[maxl];
int mp[maxl][maxl];
bitset  b[maxl];
char ch[maxl];
struct node
{
	long long w;
	int id;
	bitset  s;
	bool operator > (const node &y)const
	{
		return w>y.w;
	}
};
priority_queue,greater >q;

inline void prework()
{
	scanf("%d%d",&n,&k);
	for(int i=0;i ds;
	q.push(node{0,0,ds});
	
	while(k>0 && !q.empty())
	{
		d=q.top();q.pop();
		k--;
		if(!k)
		{
			ans=d.w;
			return;
		}
		for(int i=d.id;i

 

你可能感兴趣的:(bitset,bfs,巧妙暴力)