03 2012 档案

摘要:题目链接题目大意,给定一个有向图,按顺序输出“自己可达的顶点都可到达自己”的顶点。由于没有按顺序输出,WA了一次。View Code 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <memory.h> 4 #define CLR(a) (memset(a,0,sizeof(a))) 5 #define N 5001 6 struct node 7 { 8 int v; 9 struct node *next; 10 }; 11 struct node *in[N],*out[N]; 12 char 阅读全文
posted @ 2012-03-31 23:30 BeatLJ 阅读(350) 评论(0) 推荐(0) 编辑
摘要:题目链接题目大意,给一个有向图,求是否任意两点都单向联通。这题我用的是两次dfs求强连通图,将强连通分量缩成一个点,然后对缩点后的有向图进行拓扑排序,判断单项连通。因为一个小错误,WA了3次,第一次dfs时是求各点的后根遍历次序(时间戳),但是是以第cnt次访问的是第v个结点的形式来保存,这样可以很方便从访问次序找相应结点,便于第二次dfs。我在写的时候,不小心就写成了保存第v个结点的时间戳,自然就错了。View Code 1 #include <stdio.h> 2 #include <memory.h> 3 #define CLR(a) memset(a,0,siz 阅读全文
posted @ 2012-03-31 22:38 BeatLJ 阅读(439) 评论(0) 推荐(0) 编辑
摘要:题目链接求一个无向图的桥(可能存在重边),输出割边的数目,并按顺序输出割边的序号(输入的顺序)。由于有重边,一般需要使用邻接表来存储,我一开始嫌麻烦,想使用邻接矩阵和边集来存,没注意到节点数目太大,结果MLE。最终还是得用邻接表,写好后,有贡献了一次PE,改正格式后居然WA了,经检查在插入边时有点问题,插入时要先查找该边是否已出现,当初使用的是if(findEdge(a,b)==0&&findEdge(b,a)==0)来判断边是否已插入,后来发现这个不能保证findEdge(a,b)和findEdge(b,a)都会执行,改成if(findEdge(a,b)+findEdge(a 阅读全文
posted @ 2012-03-30 16:18 BeatLJ 阅读(479) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示