
图论-拓扑排序
文章平均质量分 81
围巾的ACM
啊啊什么时候也能成为一个大牛啊
展开
-
hdu1285 确定比赛名次 (简单拓扑排序)
题意:中文题思路:输出字典序最小的拓扑排序,如果非递归求字典序最小的拓扑排序需要用到最小值优先的优先队列,大致的思想就是队列Q总是将当前在入度为0的最小节点优先取出.保证了字典序最小.#include #include #include #include #include #include #include #include #include #include原创 2016-02-02 15:25:52 · 368 阅读 · 0 评论 -
CodeForces 638B Making Genome in Berland
思路:dfs维护一个拓扑序就好了#includeusing namespace std;const int maxn = 250;vectore[30];int vis[maxn];string ans;void dfs(int x){ vis[x]=2; for (int i = 0;i<e[x].size();i++) { if (vis[e[x][i]]=原创 2016-04-19 21:34:27 · 539 阅读 · 0 评论 -
CodeForces 645D Robot Rapping Results Report(二分+拓扑排序)
题意:有很多机器人,其中如果1号打败2号,2号打败3号,那么1号也可以打败3号,给你m场比赛的结果,问最少需要知道前几场就可以确定机器人的排名思路:二分答案,然后拓扑排序看看是否成一条直线即可#include #include #include #include #include #include #include #include #include #inclu原创 2016-03-26 16:55:06 · 699 阅读 · 0 评论 -
POJ 2762 Going from u to v …(强连通分量+拓扑排序)
题意:给你一个有向图,问是否对于任意的X,Y两个顶点,可以从X走到Y,或从Y走到X思路:是或!!!如果没有或字的话那么就是简单的判断一个图是否为强连通。有或字了的话就相当于转化为原图中每一个强连通分量之间是否连通的问题。为什么呢,因为强连通分量内部是肯定可以从X走到Y和Y走到X的了。然后缩点,对缩点形成的图最多只能由一个入度为0的点,如果有多个入度为0的点则它们肯定不连通,缩点形成的图是一棵树原创 2016-02-04 19:14:10 · 562 阅读 · 0 评论 -
HDU 2647 Reward(拓扑排序)
题意:老板要给N个员工发工资,要求每个人最少888块且要满足M个要求.比如1号员工的工资要比2号员工的工资多.老板准备满足所有要求且最终发的奖金总数要最少.如果可行输出总数,不可行输出-1.思路:就是将工资拓扑排序,注意的是输入的时候添加边要添加反向边。#include #include #include #include #include #include #incl原创 2016-02-02 22:04:18 · 538 阅读 · 0 评论 -
POJ 1270 Following Orders(拓扑排序:输出所有可能)
题意:给出一串字母和关系,问输出所有可能满足拓扑排序的排列组合思路:由于要输出所有的组合并且题目保证一定有输出,那么可以用dfs来构造组合。需要满足两个条件 1.当前被选的字母必须有效(即mark[i]==true)且当前被选的字母vis=false(即还没被选)。 2.当我们从前到后依次选择一个字母x放进topo数组的时候,我们要保证原创 2016-02-02 22:49:58 · 479 阅读 · 0 评论 -
poj2585 Window Pains(拓扑排序判定)
题意:给你一个4*4的棋盘窗口,现在电脑上有9个应用,每个应用占用固定的2*2正方形网格位置.你通过不同的顺序操作9个应用可以使得4*4的窗口当前显示的内容(数字代表)不同,现在给你一个4*4棋盘窗口的内容,问你这个内容是否合法.思路:一个判定拓扑排序是否存在的问题.把9个小窗口应用看成9个点,然后对于4*4的棋盘来说: 看(1,2)这个方格当前放的是2数字,原本(1,2)方格我们能放的数有1原创 2016-02-02 19:30:20 · 574 阅读 · 0 评论 -
hdu4324 Triangle LOVE(拓扑排序)
题意:给一个图,问存不存在三个顶点构成的环思路:直接建图然后看看能否拓扑排序,可以拓扑排序则必定满足图是有向的并且不存在环#include#include#include#includeusing namespace std;const int maxn=2000+10;int n;vector G[maxn];int in[maxn];bool topo(){原创 2016-02-02 16:26:41 · 431 阅读 · 0 评论 -
poj2367 Genealogical tree(拓扑排序:输出方案)
思路:模板题一时SB忘记加!=EOF,一直OLE#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define maxn 1000#de原创 2016-02-02 15:49:20 · 350 阅读 · 0 评论 -
hdu3342 Legal or Not(简单拓扑排序判定)
思路:拓扑排序模板题#include#include#include#includeusing namespace std;const int maxn=100+10;int n,m;vector G[maxn];int in[maxn];bool topo(){ queue Q; int sum=0; for(int i=0;i<n;i++原创 2016-02-02 15:30:41 · 387 阅读 · 0 评论 -
CSU 1804有向无环图 (拓扑排序dp)
思路:先将每个点i对应的count(i,j)*bj算出来然后乘ai,累加就是答案,注意这里要类似拓扑排序那样,不过要倒着做,避免后效性#includeusing namespace std;#define LL long longconst int maxn = 1e5+7;const int mod = 1e9+7;vectore[maxn];LL a[maxn],b[m原创 2016-09-04 10:57:33 · 1382 阅读 · 0 评论