摘要: 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1285纯粹的拓扑排序View Code 1 #include <stdio.h> 2 #include <string.h> 3 int count,n,in[505],map[505][505],vis[505],sort[505]; 4 5 void topo(int x) 6 { 7 vis[x] = 1; 8 sort[count] = x; 9 count++;10 int i;11 for(i = 1;i <= n;i++)12 {13... 阅读全文
posted @ 2012-08-02 21:47 某某。 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2094对于是否有环,是通过一个N(节点数)的循环来判定。检查并更新每个节点的入度数。每找到一个入度唯一的节点就是它的临边取消,即让他的下个节点的入度减一;最后看看入度为0的节点数是否为N。这道题我还多加了个判断看看是否含有多个冠军的可能。这道题倒是没有那么麻烦,没打用到拓扑。View Code 1 #include <stdio.h> 2 #include <string.h> 3 struct node 4 { 5 char str[1005]; 6 }a[1005]; 7 阅读全文
posted @ 2012-08-02 21:40 某某。 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 这道题数据比较大,得用领阶表,表示压力很大。。。。这道题有两个地方值得注意。第一个地方就是怎么确定是否有环,确定的办法就是就是根据离散数学(离散86,烧包加雄起~)的入度来说,当遍历一边并且更新后查找入度为零的点应该有N个(一共N个点)。用一个计数器num去计算是否为n。第二个地方就是方向思维。按理说我们应该用大的作小的父亲,但是当我们建立完一个拓扑表以后,我们如果按照以大的作为父亲的话,我们在计算最顶端的权值(暂且叫为权值吧),即最高点的薪水时,用起点与后续节点相比较加一时不准的,因为后面节点的值会随着向后遍历而改变,而对于遍历完的值无法改变。所以我们不如去找最为固定的点,即最小薪水的点,来 阅读全文
posted @ 2012-08-02 21:31 某某。 阅读(424) 评论(0) 推荐(0) 编辑