摘要: 拓扑排序要用list,不能用vector,确保删除边的开销为O(1)。因为主循环中,总共要从队列中pop掉n个数(点),然后总共要删e条边,删点和边的开销都是O(1)。所以整个时间复杂度就是O(n+e)。如果最终还剩下边,证明存在环,sort失败。 1 bool sort(list > &graph... 阅读全文
posted @ 2014-10-05 23:58 linyx 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 之前有转过一篇:http://www.cnblogs.com/linyx/p/3638222.html这里按wiki的实现写一遍。解一下下面这道题。假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友…),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共... 阅读全文
posted @ 2014-10-05 22:23 linyx 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 波兰式,操作符放在操作数前。逆波兰式,操作符放在操作数后。中序的话,用两个栈,一个存操作符, 一个存操作数,根据操作符优先级来操作。为了处理边界情况,在操作符的栈底和栈顶都放了一个"#"。伪代码如下: 1 stack ops; 2 stack nums; 3 ops.push('#'); 4 5 ... 阅读全文
posted @ 2014-10-05 15:38 linyx 阅读(151) 评论(0) 推荐(0) 编辑