2021上海L Three,Three,Three(一般图匹配)

给定 所有点度数为3的无向图,将mmm条边 其分成m3\dfrac{m}{3}3m​ 条长度为333的链。

定理:



#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){for(int i=1;i<n;i++)printf("%d ",a[i]);printf("%d\n",a[n]);
}
template <typename T>     //x=max(x,y)  x=min(x,y)
void cmx(T &x,T y){if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){if(x>y) x=y;
}
struct Blossom_Tree{vector<int>e[N];queue<int>q;int mh[N],pre[N],s[N],id[N],vis[N],n,num;void init(int nn){ //初始化 n=nn,num=0;for(int i=1;i<=n;i++) e[i].clear(),mh[i]=pre[i]=vis[i]=s[i]=id[i]=0;}void add(int u,int v){e[u].push_back(v),e[v].push_back(u);}int find(int x){ return s[x]==x?x:s[x]=find(s[x]);}int LCA(int x,int y){  //求LCA. for(++num;;swap(x,y))if(x){if(id[x=find(x)]==num) return x;//在同一个奇环肯定能找到被编号的结点. id[x]=num,x=pre[mh[x]];  //沿增广路径的非匹配边向上走直到找到祖先. }}void blossom(int x,int y,int rt){  //缩点(开花)  O(n)while(find(x)!=rt){pre[x]=y,y=mh[x];if(vis[y]==2) vis[y]=1,q.push(y);//如果奇环上有2型结点 就变为1型结点加入队列. if(find(x)==x) s[x]=rt;//只对根处理. if(find(y)==y) s[y]=rt;x=pre[y];}}bool aug(int st){   //求增广路径.O(n) for(int i=1;i<=n;i++) vis[i]=pre[i]=0,s[i]=i; while(!q.empty()) q.pop();q.push(st),vis[st]=1;while(!q.empty()){int u=q.front();q.pop();for(auto v:e[u]){if(find(u)==find(v)||vis[v]==2) continue;//如果是已经缩点了或者是偶环直接继续,没有影响. if(!vis[v]){ //如果没有被染色 vis[v]=2,pre[v]=u;if(!mh[v]){   //如果未被匹配,就进行匹配 for(int x=v,last;x;x=last)  //增广路取反 last=mh[pre[x]],mh[x]=pre[x],mh[pre[x]]=x;return 1;}vis[mh[v]]=1,q.push(mh[v]); //否则将v的匹配结点染色,加入队列. }else{int rt=LCA(u,v);  //找到LCA ,然后进行缩点. blossom(u,v,rt),blossom(v,u,rt);}}}return 0;}int cal(){int ans=0;for(int i=1;i<=n;i++) if(!mh[i]&&aug(i)) ans++; //最大匹配. return ans;}
}T;
int deg[N][N],n,m;
bitset<N>vis;
int que[N],tp;
int pre[N];
void dfs(int u){vis[u]=1;que[tp++]=u;for(int i=1;i<=n;i++) if(!vis[i]&&deg[u][i]) dfs(i);
}
int main(){scanf("%d%d",&n,&m);T.init(n);rep(i,1,m){int u,v;scanf("%d%d",&u,&v);deg[u][v]++,deg[v][u]++;T.add(u,v);}int ans=T.cal();if(ans*2!=n) return puts("IMPOSSIBLE"),0;rep(i,1,n) deg[i][T.mh[i]]--;//return 0;rep(i,1,n) if(!vis[i]){tp=0;dfs(i);for(int j=0;j<tp;j++)pre[que[j]]=que[(j+1)%tp];}rep(i,1,n)if(i<T.mh[i]){printf("%d %d %d %d\n",pre[i],i,T.mh[i],pre[T.mh[i]]);}return 0;
}

2021上海L Three,Three,Three(一般图匹配)相关推荐

  1. 2021上海益生产品(益生菌)展浅谈-益生菌对身体的21个好处

    2021上海益生产品(益生菌)展浅谈-益生菌对身体的21个好处 1.益生菌在我们体内的重量超过我们的大脑 一般人的大脑重量约3磅,一个健康的人体将有超过3.5磅的益生菌和生物体(根据凯西亚当斯博士的事 ...

  2. 2021世界人工智能大会AI Debate:图神经网络是否是实现认知智能的关键?

    来源:学术头条 2021年7月10日,WAIC(2021世界人工智能大会)"图神经网络与认知智能前沿技术论坛"在上海世博中心成功举办.清华大学计算机科学与技术系教授李涓子,复旦大学 ...

  3. 上海落户计算机水平毕业研究生,2021上海积分落户应届毕业生直接落户上海

    原标题:2021上海积分落户应届毕业生直接落户上海 --上海落户积分120分,不是研究生毕业就有100分吗?研究生毕业就有100分,正常读书年龄肯定很小就有30分了啊,不是直接就可以落户了吗?为什么大 ...

  4. 2021上海软件和信息技术服务业百强榜单出炉:七牛云再登榜单

    "十四五"以来,我国数字化转型逐步加快,一大批以软件和信息技术服务为代表的公司得到高速发展.在此背景下,以软件智能化为核心引领数字经济发展的优秀企业顺势而生,深度参与社会数字化建设 ...

  5. 提升技术认知,参加2021上海QCon技术大会

    文章首发于公众号[看点代码再上班],欢迎围观,获取更多好文. 原文地址:提升技术认知,参加2021上海QCon技术大会! 全文共计6499字,预计阅读时间15分钟 目录 开篇 第一天-上午 签到&am ...

  6. 2021上海酵素展商讯-酵素人必备的常见酵素知识(及时收藏)

    2021上海酵素展商讯-酵素人必备的常见酵素知识(及时收藏) 一.酵素不足的症状 1.容易感冒: 2.肌肉痛,关节痛,腰膝背痛: 3.持续便秘,腹泻或粪便黏腻恶臭: 4.皮肤粗糙,容易长各种痘痘: 5 ...

  7. 【报告分享】2021大中学生职业规划调查-新浪图数室头条(附下载)

    摘要:#如何看待大学生期望薪资普遍较高#?大中学生职业规划调查:#00后高中生对入职薪资更乐观#!近期,@图数室 联合@微博校园 @微博中学 发布的"大中学生职业规划调查结果"显示 ...

  8. 2021年34省最新shp矢量图

    数据集名称:2021年34省最新shp矢量图 时间范围:2021年 相关说明:矢量图是根据几何特性来绘制图形,矢量可以是一个点或一条线,矢量图只能靠软件生成,文件占用内在空间较小,因为这种类型的图像文 ...

  9. 2021上海燕窝、滋补品展浅谈中医对燕窝的研究:这6种情况吃燕窝,效果显著

    2021上海燕窝.滋补品展浅谈中医对燕窝的研究:这6种情况吃燕窝,效果显著 2021世界燕窝展|上海滋补品展浅谈中医对燕窝的研究:这6种情况吃燕窝,效果显著~ 燕窝素有"东方珍品,稀世名药& ...

最新文章

  1. Thinkpad x230设置启动顺序
  2. Ext JS学习第十六天 事件机制event(一)
  3. 2021年11月软考准考证打印时间及操作步骤
  4. tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm.的一种解决方法
  5. 计算机错误2 找不到指定文件,无法执行目录中的文件 错误2系统找不到指定文件怎么办?...
  6. 首发量产1亿像素,小米新机宣布11月5日发布!
  7. 【洛谷 P1070】道路游戏 (DP)
  8. Leetcode 983.最低票价
  9. 端到端车道线检测_如何使用Yolov5创建端到端对象检测器?
  10. 计算机多媒体最新参考文献,计算机多媒体论文
  11. Ajax传json对象(jQuery)
  12. android 程序应用市场搜索关键字,安卓应用市场的搜索规则以及安卓应用市场ASO优化...
  13. Advanced Javascript outlining插件说明
  14. 机械臂技术参数的意义
  15. 窄带传输与LoRa扩频传输技术应用方案对比
  16. 解决谷歌浏览器被篡改主页问题
  17. sublime text3设置快捷键在浏览器中打开
  18. 西瓜错时上市销售,提高经济效益的背后是技术支持!
  19. vivo7.0系统手机最完美激活Xposed框架的教程
  20. 计算机硬件资源可,计算机硬件资源,Computer hardware resource,音标,读音,翻译,英文例句,英语词典...

热门文章

  1. 电子产品销售数据分析
  2. 微积分入门:无穷小之比与无穷小求和
  3. 安卓 jni 开发 —— Android Studio 打包 so 的坑
  4. QT官网关于交叉编译说明
  5. sobel算子原理与实践
  6. Flash:快速导出png(jsfl)
  7. 纯函数,副函数具体例子
  8. 042分享资料下载地址汇总
  9. 关于谷歌眼镜的几点常见问题
  10. Java技能点--基本类型与非基本类型