付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、GraphitionTime Limit: 0.5 second Memory Limit: 1 000 KBThere is a simple graph wi n even number of edges. You are to define if it is sible to present it by the set of pairs of adjacent edges (having a common vertex).Inputcontains a sequence of the numbers pairs. Each pair denotes vertiidentifiers of
2、 one edge. All the identifiers areegers from 1 to 1000.You may amet the input is correct, i.e there are noloops andmultiple edgeshe graph definedby theinput data.Output“1”“0”(withoutquoionmarks),iftheitionissibleandotherwise.Sle InputS 1231le input #123110S 1234le input #223110Sle OutputS 1le output
3、 #1Sle output #20试题简介(URAL1320):给定一个无向图,并且满足:(1)(2)(3)图中不存在重边和连向自身的弧总边数为偶数结点不超过 1000 个问你能否将图中的边划分成两个一组,使得每组中的两条边在原图中有公共结点。分析:从问题的规模看,用枚举明显是不可能的。可以肯定的是,若某个连通块中包含了奇数条边,该图一定无解(无论怎么分,最后至少会留下一条弧没法配对)。反过来思考,如果图中的所有连通块都包含了偶数条边,是不是一定有解呢?通过列举几个简单数据,发现确实如此,下面就要尝试着证明这个结论。对图中的每通块做一次 DFS 遍历,得到其对应的搜索树。由于图中可以有环,所以
4、这棵树上可能存在后向弧。定义每次操作先找到树中深度最深的点X(显然X 为叶子结点),设 X 的父亲为Y。那么可能出现如下情况:(1)(2)(3)X 有多于 2 条后向弧,去掉这两条后向弧。X 只有 1 条后向弧,去掉这条后向弧,并去掉 X 和Y 之间的弧。X 没有后向弧,但是 Y 有后向弧,去掉 X、Y 之间的弧和 Y 的一条后向弧。X、Y 都没有后向弧,但是 Y 除了 X 以外还有至少 1 个儿子结点。由于 X 是最深点,所以 Y 的其它儿子也是叶子结点,去掉 X、Y 的连边,Y与它另外一个儿子的连边。X、Y 都没有后项弧,而且 Y 除了 X 外没有儿子结点,由于前面假定了该连通块中包含偶数
5、条边,前面 4 步每次都删除 2 条边,因此 Y 必定(4)(5)不是根结点(否则就只剩它连X 的这一条边了,与假设以去掉X 与 Y 之间以及 Y 与 Y 父亲之间的连边。),可每进行一次操作,就成功将两条边划分为一组,并且剩下的仍然是一棵树,只要像这样不断地操作下去,直到子图中所有弧都被剔除,就能得到一个满足条件的方案。综合上面的分析,就可以得到如下结论:图G 存在一个合法划分方案的充要条件是,G 中的每个连通块都包含了偶数条边。接下来就很简单了,采用最简单的并查集,就可以用O(N)的空间复杂度, O(M)的时间复杂度高效地解决该问题。参考程序:$r-,s-,q- const infnsou
6、tfns maxnvar tree, edge=:input.txt;output.txt; 1000;array1. maxn ofeger;function findroot(x var root, now, temp beginnow :=x;while treenow :eger) :eger; 并查集子过程eger;0do now :=treenow;root :=now; now :=x; while now root do begintemp :=treenow; treenow :=root; now end;whilefindroot :=root;end;findroot:
7、=temp;procedure main; 并查集主过程var rootx, rooty, x, y :begineger;assign(input, infns); reset(input);fillchar(tree, sizeof(tree), fillchar(edge, sizeof(edge), while not eof do beginreadln(x, y);rootx :=findroot(x); rooty$ff);0);:=findroot(y);if rootx rooty then beginif treerootx treerooty then beginedge
8、rootx treerootxtreerooty:=edgerootx:=treerootx:=rootx;+edgerooty +treerooty;1;endthen else beginedgerooty treerooty treerootxend;else:=edgerootx:=treerootx:=rooty;+edgerooty +treerooty;1;end else inc(edgerootx); end;whileclose(input);end;mainprocedure out;var i, ansbegin:eger; assign(output, outfns); rewrite(output);ans :=1;for i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全员A证考试通关测试卷附答案详解(基础题)
- 安全员A证考试练习题(一)带答案详解ab卷
- 2025年南阳科技职业学院单招职业技能测试题库完整答案详解
- 劳务派遣公司员工考核方案
- 计算机四级模考模拟试题及参考答案详解(精练)
- 文化产业融资难点及解决方案
- 安全员A证考试提分评估复习含答案详解【考试直接用】
- 2025年二级建造师真题答案解析
- 2025年安全员A证考试预测试题附完整答案详解【夺冠系列】
- 农业科技推广现场培训课程方案
- GJB373B-2019引信安全性设计准则
- 工业管道安装施工组织设计方案
- 浙江省义乌小商品出口贸易问题研究
- 非遗技艺传承活动策划与实施
- GB/T 45494-2025项目、项目群和项目组合管理背景和概念
- 票务服务合同协议
- 二零二五版医院物业管理服务合同标准范例
- 渔获物船上保鲜技术规范(DB3309-T 2004-2024)
- 东北大学2015年招生简章
- 资金管理办法实施细则模版(2篇)
- IATF16949-质量手册(过程方法无删减版)
评论
0/150
提交评论