摘要: 和poj的2513差不多,不过没那么麻烦,这个不需要用Trie树。。并查集+欧拉回路。先看成是一个无向图,判断连通性。 之后记录每一个字母的入度和出度。这个也是两种情况:一种:所有点的入度==其出度;另一种:只有两个点的入度不等于它的出度, 并且其中一个点的入度==其出度+1,另一个点的出度==其入度+1;这样就很简单了^_^# include<stdio.h># include<string.h># define MAX 27int father[MAX],indegree[MAX],outdegree[MAX];int find(int x){ while(fath 阅读全文
posted @ 2011-05-06 22:43 奋斗青春 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 和hdu的3639有点相似,不过最后求的不太一样。。方法还是一样的,我也是用强连通分量+反向图做的。。有一周没写强连通了,,有点手生了,以后要多练习练习。。题目大意:有N头牛 ,如果a 牛喜欢b牛 而 b牛喜欢c牛,那a和b都喜欢c牛。。像那种爱屋及乌。。也就是喜欢是可以传递的,问最后 被除它自己之外的所有牛 都喜欢的牛 的数量。。有那么一点拗口。。。先用强连通缩点,, 之后建立反向图,,从入度为0的开始深搜,,如果该点符合条件的话 就加上该点的权值(即是该点所包含的牛的数量),之后输出即可。。。# include<stdio.h># include<string.h> 阅读全文
posted @ 2011-05-06 22:36 奋斗青春 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题目意思:有许多的棍子,每一个棍子的两个端点都标记一种颜色, 端点颜色相同的两个棍子可以连在一起,问最后能不能把所有的棍子连成一条直线。。刚开始题目理解错误,,误以为最后连成一个环,怎样搞都不对,,后来用有道才发现理解错误,,英语差的真的伤不起啊。。。先用Trie树把颜色改为点,并记录每一种颜色出现的次数,再用并查集判断是否连通,,之后用欧拉回路判断能否构成直线。。这里存在两种情况:1-3 , 3-5, 5-1 和 1-3, 3-5, 5-1 , 1-2一种是所有的所有的颜色都出现偶数次,另一种是有两种颜色出现奇数次,, 这样就很简单了。。# include<stdio.h># i 阅读全文
posted @ 2011-05-06 20:12 奋斗青春 阅读(232) 评论(0) 推荐(0) 编辑