某次做JSOI的图论题
虐报其他人爆搜程序(废话)
原因就是利用了Dancing links基础-->>双向链表 !
给出一个双向链表的模版
#include <cstdio>
#include <iostream>
using namespace std;
const int maxn = 100000 + 5;
class Dancinglinks
{
public :
void init()
{
cin >> n;
for (int i=1; i<=n; ++i)
scanf("%d", &key[i]);
for (int i=0; i<=n; ++i)
pre[i] = i - 1, suc[i] = i + 1;
pre[0] = n; suc[n] = 0;
}
//给个大致优化的dfs模版, 参数自定
void dfs()
{
if () return;
for (int i=suc[0]; i; i=suc[i])
{
suc[pre[i]] = suc[i];
pre[suc[i]] = pre[i];
dfs();
suc[pre[i]] = pre[suc[i]] = i;
}
}
void work()
{
dfs();
//操作
}
private :
int n;
int key[maxn];//关键字
int pre[maxn];//前驱
int suc[maxn];//后继
};
Dancinglinks dancinglink;
int main()
{
dancinglink.init();
dancinglink.work();
}
今天问牛们求了Dancing links的资料, 以后会持续更新!