拓扑排序基础 hdu1258,hdu2647】的更多相关文章

由这两题可知拓扑排序是通过“小于”关系加边建图的 hdu2647 /* 拓扑排序的原则是把“小于”看成有向边 此题反向建图即可 并且开num数组来记录每个点的应该得到的权值 */ #include<bits/stdc++.h> #include<queue> using namespace std; #define maxn 20000 struct Edge{ int to,nxt; }edge[maxn<<]; int head[maxn],tot,n,m; voi…
今天刚学的拓扑排序,大概搞懂后发现这题是赤裸裸的水题. 于是按自己想法敲了一遍,用queue做的,也就是Kahn算法,复杂度o(V+E),调完交上去,WA了... 于是检查了一遍又交了一发,还是WA... 我还以为是用queue的问题,改成stack也WA,然后干脆放弃STL,手敲了队列,还是WA了... 我抓狂了. 感觉没什么问题的,卡了我一个多小时.最后用样例0 1测试,发现是在输入的循环判断时出错了,他要求两个都为0时结束,我只要有一个为0就结束了... 坑爹,血的教训... 然后我把之前…
拓扑排序基础 拓扑排序用于解决有向无环图(DAG,Directed Acyclic Graph)按依赖关系排线性序列问题,直白地说解决这样的问题:有一组数据,其中一些数据依赖其他,问能否按依赖关系排序(被依赖的排在前面),或给出排序结果. 最常用解决拓扑排序问题的方法是Kahn算法,步骤可以概括为: . 根据依赖关系,构建邻接矩阵或邻接表.入度数组 . 取入度为0的数据(即不依赖其他数据的数据),根据邻接矩阵/邻接表依次减小依赖其的数据的入度 . 判断减小后是否有新的入度为0的数据,继续进行第2…
拓扑排序基础 拓扑排序用于解决有向无环图(DAG,Directed Acyclic Graph)按依赖关系排线性序列问题,直白地说解决这样的问题:有一组数据,其中一些数据依赖其他,问能否按依赖关系排序(被依赖的排在前面),或给出排序结果. 最常用解决拓扑排序问题的方法是Kahn算法,步骤可以概括为: . 根据依赖关系,构建邻接矩阵或邻接表.入度数组 . 取入度为0的数据(即不依赖其他数据的数据),根据邻接矩阵/邻接表依次减小依赖其的数据的入度 . 判断减小后是否有新的入度为0的数据,继续进行第2…
题目简介:有个工厂的老板给工人发奖金,每人基础都是888,工人们有自己的想法,如:a 工人想要比 b 工人的奖金高,老板想要使花的钱最少 那么就可以 给b 888,给a 889 ,但是如果在此基础上,b也想比a高,那么就不能让他们满意,输出 -1:输入第一行有两个数字,分别为工人数n和要求数m,接下来m行为a员工要求比b员工奖金高. 思路简介:一般拓扑排序:通过记录邻接表入度,先查找入度为0的点输出,如有多个相同值,则随意输出,然后删除该点与下一点的连接,继续查找入度为0的点,直到全部点输出完毕…
题目 /***************************参考自****************************/ http://www.cnblogs.com/newpanderking/archive/2012/10/16/2726757.html 上有详细注解,我是看了之后写的,我的代码有一咪咪的改动 //这是一道典型的拓扑排序的题,刚开始时没有理解,//上网查了好多关于拓扑排序的知识才明白,//就是针对一个顶点活动网(Activity On Vertex network),简…
题意不说了,说下思路. 给出的关系是a要求的工资要比b的工资多,因为尽可能的让老板少付钱,那么a的工资就是b的工资+1.能够确定关系为a>b,依据拓扑排序建边的原则是把"小于"关系看成有向边.那么我们能够建边v->u. #include <stdio.h> #include <string.h> #include <string> #include <iostream> #include <algorithm> #…
题目来源:NOIP2013 普及第四题 题目描写叙述 Description 一条单向的铁路线上,依次有编号为1, 2, -, n的n个火车站.每一个火车站都有一个级别,最低为1级.现有若干趟车次在这条线路上行驶.每一趟都满足例如以下要求:假设这趟车次停靠了火车站x.则始发站.终点站之间全部级别大于等于火车站x的都必须停靠. (注意:起始站和终点站自然也算作事先已知须要停靠的网站) 比如,下表是5趟车次的执行情况.当中.前4趟车次均满足要求,而第5趟车次因为停靠了3号火车站(2级)却未停靠途经的…
此题的关键在于分层次,最低一层的人的奖金是888,第二层是888+1 …… 分层可以这样实现.建立反向图.在拓扑排序的时候,第一批入度为0的点就处于第一层,第二批处于第二层 …… 由于是逐个遍历入度为0的点,所以怎么实现上面所说的第一批,第二批就需要动点脑. 可以试试下面的测试数据: 4 31 32 34 3 4 31 22 34 3 4 21 23 4 6 31 23 45 6 测试结果依次是: 3555 3556 3554  5331 #include<iostream> #include…
Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16602 Accepted Submission(s): 5308 Problem Description Dandelion's uncle is a boss of a factory. As the spring festival is coming , he wants…