摘要: 题意:求一个拓扑排序,使其weight是递增的,当有多个序列存在是,要求首先使1号的weight最小,然后是2号....解题思路:对于一个有向无环图,若按质量轻的往质量大的建边,那么当有多个入度为0的点存在时,不能确定将哪个放在前面能使其最终序列最优,但反过来思考,对于出度为0的所有点,其中编号最大的让其排到最后面,那么结果一定是最优的。#include#include#include#define Maxn 402#define Maxm 40010using namespace std;int graphic[Maxn][Maxn],indegree[Maxn],n,m,ans[Maxn] 阅读全文
posted @ 2013-07-15 21:18 fangguo 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 这题主要在于建图。对9个2*2的小块,第i块如果出现了不等于i的数字,那么一定是在i之后被brought的。可以从i到该数字建一条边。图建好后,进行一次拓扑排序,判段是否存在环。若存在环,那么就是BROKEN,否则是CLEAN。#include#include#include#define Maxn 102#define Maxm 10010using namespace std;int graphic[Maxn][Maxn],indegree[Maxn],n,m,map[Maxn][Maxn],vi[10];int Topsort(){ int i,j,k,num=0; for(... 阅读全文
posted @ 2013-07-15 14:01 fangguo 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 这题就是朴素的拓扑排序,只是一开始题意没看清楚,不太清楚几种结果的优先级。优先级其实就是给的测试数据的结果。#include#include#include#include#include#define Maxn 102#define Maxm 10010using namespace std;int graphic[Maxn][Maxn],indegree[Maxn],n,m,e;char ans[Maxn];int Topsort(){ int i,j,k,num,temp,f=0; temp=0; for(i=1;i1) f=1; f... 阅读全文
posted @ 2013-07-15 12:31 fangguo 阅读(120) 评论(0) 推荐(0) 编辑