并查集用法一例
来源:互联网 发布:淘宝有好货怎么参加 编辑:程序博客网 时间:2024/05/01 09:55
题目:有一个相似属性列表,每一行有一些属性,属性间"\t"分割。若某两行有一个属性相同,则认为他们都相似,要求将其合并。比如相似属性表:
生日 出生日期 出生日
身高 身长
出生年月日 出生时间 出生日期
我们要做的是合并为 “生日 出生日期出生日期 出生年月日出生时间”
code如下:
#!/usr/bin/env python#!-*- coding:utf-8 -*-#!vim: set ts=8 sw=8 sts=8 tw=100 noet:# ***************************************************************************# # # $Id$ # # **************************************************************************/ import osimport sys node_father={}output_dict={}def find_father(item):while node_father.has_key(item):item=node_father[item]return itemfor line in sys.stdin:lin=line.strip().split('\t')if len(lin)!=2:continueitem1=lin[0]item2=lin[1]f_item1=find_father(item1)f_item2=find_father(item2)if f_item1==f_item2:continueelse:node_father[f_item1]=f_item2if not output_dict.has_key(f_item2):output_dict[f_item2]=[]if f_item1 not in output_dict[f_item2]:output_dict[f_item2].append(f_item1)if output_dict.has_key(f_item1):for item in output_dict[f_item1]:if item not in output_dict[f_item2]:output_dict[f_item2].append(item)output_dict[f_item1]=[]for item in output_dict:output=itemif output_dict[item]:for key in output_dict[item]:output+="\t"+keyprint output
- 并查集用法一例
- 并查集-一笔画
- 并查集例题一
- 并查集的理解及用法
- 并查集专题练习(一)POJ1611
- 并查集的应用(一)
- 并查集总结(一)
- 每日一题27:并查集
- nyoj 一笔画(并查集)
- 并查集-一笔画优化
- 一.快速并查集(Union_Find)
- POJ 1456 并查集的又一种用法
- 并查集巧妙用法(codeforces)C. Destroying Array
- poj 1182 食物链 并查集 的 高水平用法
- hdu1598贪心+并查集的巧妙用法
- 一、并查集 (Union-Find Set)
- nyist 42一笔画问题(并查集+欧拉图)
- NYOJ42 一笔画问题 【欧拉回路】+【并查集】
- Fragment实现tab功能
- 11.C语言之优先级和连接器
- uva297 第一次又是runtime error 改了数组大小就AC了
- Easyui - combo[tree,box]下拉图标有间隙bug解决方法
- 怎样才能成为一个优秀的产品经理?
- 并查集用法一例
- 连接数据库时报错:无效的列索引
- SQL Server大负载的生产环境下的性能优化:初识元数据优化
- 超极本™ 触摸屏 - 一种全新的动手方式
- arduino之红外
- java.util.concurrent介绍
- JQuery获取当前屏幕的高度宽度的实现代码
- 二叉树中节点的最大距离
- [Urgent]Technical Support Engineer II - 2013/10/18