



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防消防火灾课件
- 跑步培训分享:从入门到进阶的科学跑步指南
- 项目管理课件教学
- 高风险诊疗技术操作授权及审批管理制度培训
- 希沃教学一体机赋能数字化教学培训大纲
- 保安门卫礼仪培训
- 2025年饮料及冷饮服务合作协议书
- 城镇污水管网建设工程申请报告(模板范文)
- 乡村振兴战略工作实施方案
- 2025年建筑钢材:螺纹钢项目合作计划书
- 四川华西集团有限公司总部管理人员选聘笔试真题2024
- 山东济南综保控股集团招聘笔试真题2024
- 商场动火作业培训
- 2025年KET剑桥英语五级考试全真试卷(秋季版:含答案解析)
- 德育培训课件
- 2025年企业管理专业考试试题及答案
- 版2025-2030中国天然火山灰市场深度调查与未来发展趋势研究报告
- 2025年急性肺栓塞诊断和治疗指南解读课件
- JHA工作危害分析专项培训
- 18CrNiMo7-6齿轮钢渗碳工艺优化及其对疲劳性能的影响研究
- 2025年环境评价公众参与制度创新与机制优化分析
评论
0/150
提交评论