随笔分类 - 000----模板
摘要:xg 题意 n个人,m个关系。对于第i个关系,x互相认识y。 问能否把n个人分成两组,使得一组里的人互相不认识。 如果能,则要开ans个房间,每个房间两人,使得每个房间里的人互相认识。 思路 第一个问题就是01染色判断能否染色成功。 第二个问题裸最大匹配 #include <iostream> #i
阅读全文
摘要:跑完后 c[x]表示x所在的强连通分量编号。 vector数组scc[i]记录了编号为i的强连通分量的所有节点。 共cnt个强连通分量 int dfn[maxn],low[maxn],sta[maxn],c[maxn],ins[maxn]; vector<int>scc[maxn]; int num
阅读全文
摘要:给一个无向图,输出欧拉图顺序 //答案存在了ans数组,abs[1-t] int sta[1000010],ans[1000010],vis[1000010]; int n,m,top,t; void euler() { sta[++top] = 1; while(top > 0) { int x
阅读全文
摘要:1、啥叫双连通,一个图,不存在割点,桥就是双连通。 这样的图有啥性质:从x到y一定存在至少两条不共边的路(可以共点)。 缩点是啥:把各各双连通的块划分成一个,产生一个新图(树,一定不成环)。 2、写法 1、先用tarjan求出来割边。 2、dfs给每一块双连通标号。 3、对于是桥的边,建一个新图,其
阅读全文
摘要:时间戳dfn,追溯值low。 1、找一个图的所有桥 void tarjan(int x,int in_edge) { dfn[x] = low[x] = ++num; for(int i = head[x];i;i = nextt[i]){ int y = ver[i]; if(!dfn[y]){
阅读全文
摘要:洛谷那题solve函数不更新s的值也是可以过,数据有点弱 题意 求次小生成树。 思路 1、求最小生成树。 2、bfs预处理f和g函数,其中f(x,i)为x的第2k,g(x,i,0),g(x,i,1)为x到x+2i的最大值和,次大值。更新过程画画即可。 3、对于任意非树边,求出该两点在树上的最大值和次
阅读全文
摘要:要保证a函数为从小到大排序的,所以要用sort rep(i,1,n) cin>>a[i]; sort(a+1,a+1+n); do{ rep(i,1,n){ cout<<a[i]<<sp; } cout<<endl; }while(next_permutation(a+1,a+1+n));
阅读全文