这题是今天下午BNU SUMMER TRAINING的C题

是队友给的解题思路,用拓扑排序然后就可以了

最后是3A

其中两次RE竟然是因为:

scanf("%d",mm);

ORZ

以后能用CIN还是CIN吧  QAQ

贴代码了:

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <stack>
#include <queue>
#include <algorithm> #define ll long long
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = ;
int indgree[MAXN], map[MAXN][MAXN], ans[MAXN], cur[MAXN][MAXN];
int n;
void init(){
for(int i = ; i <= n; ++i){
for(int j = ; j <= n; ++j){
map[i][j] = i == j ? : INF;
}
}
memset(indgree, , sizeof(indgree));
memset(ans, , sizeof(ans));
memset(cur, , sizeof(cur));
} void insert_cur(int x, int num){
int pos = ;
while(){
if(cur[x][pos] == ){
cur[x][pos] = num;
break;
}
++pos;
}
} int sigma_cur(int x){
int temp_ans = ;
int Max = -INF;
for(int i = ; cur[x][i] != ; ++i){
if(cur[x][i] > Max) Max = cur[x][i];
}
int flag = ;
for(int i = ; cur[x][i] != ; ++i){
if(cur[x][i] == Max) ++flag;
}
if(flag >= ) ans[x] = ++Max;
else if(flag == ) ans[x] = Max;
return ans[x];
} void topsort(){
int i, j;
while(){
for(i = ; i <= n; ++i)
if(indgree[i] == ) break;
if(i != n + ){
for(j = ; j <= n; ++j)
if(map[i][j] == ){
map[i][j] = ;
--indgree[j];
insert_cur(j, ans[i]);
if(indgree[j] == ) ans[j] = sigma_cur(j);
}
indgree[i] = -;//pop i
}
else break;
}
} int main(){
int i, j, k, p, mm, a, b;
scanf("%d",&mm);
int numCase = ;
while(mm--){
init();
scanf("%d%d%d",&k,&n,&p);
while(p--){
scanf("%d%d",&a,&b);
++indgree[b];
map[a][b] = ;
}
for(i = ; i <= n; ++i){
if(indgree[i] == ) ans[i] = ;
}
topsort();
printf("%d %d\n",++numCase,ans[n]);
}
return ;
}

UVALive 6467 Strahler Order 拓扑排序的更多相关文章

  1. UVALive 6467 Strahler Order(拓扑序列)

    In geology, a river system can be represented as a directed graph. Each river segment is an edge; wi ...

  2. UVALive 6467 Strahler Order

    > 题目链接 题意:给定一个有向图,顶点代表水池,入度为零的定点代表水源,等级是1,他们延河道(有向边)冲撞,对于普通的水池来说,题目给定判断它等级的两个准则,问出度为零的那个点的等级是多少. ...

  3. uvalive 4255 Guess(拓扑排序)

    算好题目,反正我没想到可以用图论做(虽然现在做的是图论专题= =) 首先是要把求每个位置上的值转化为求 “前缀和之差”,这是一个很有用的技巧 其次,由输入的(n+(n-1)+...+2+1)个符号,可 ...

  4. UVALive - 4255 - Guess (拓扑排序)

    Guess 题目传送:Guess 白书例题 注意拓扑排序时,,入度同一时候为0的前缀和须要赋值为同一个数(这个数能够随机取.由于前缀和是累加的,每个a的数值都仅仅和前缀和之差有关).,由于此时能够看成 ...

  5. 【二分+拓扑排序】Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348

    目录 Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 MEA ...

  6. UVALive 6264 Conservation --拓扑排序

    题意:一个展览有n个步骤,告诉你每一步在那个场馆举行,总共2个场馆,跨越场馆需要1单位时间,先给你一些约束关系,比如步骤a要在b前执行,问最少的转移时间是多少. 解法:根据这些约束关系可以建立有向边, ...

  7. 【拓扑排序或差分约束】Guess UVALive - 4255

    题目链接:https://cn.vjudge.net/contest/209473#problem/B 题目大意:对于n个数字,给出sum[j]-sum[i](sum表示前缀和)的符号(正负零),求一 ...

  8. 拓扑排序(Topological Order)UVa10305 Ordering Tasks

    2016/5/19 17:39:07 拓扑排序,是对有向无环图(Directed Acylic Graph , DAG )进行的一种操作,这种操作是将DAG中的所有顶点排成一个线性序列,使得图中的任意 ...

  9. D - Guess UVALive - 4255 拓扑排序

    Given a sequence of integers, a1, a2, . . . , an, we define its sign matrix S such that, for 1 ≤ i ≤ ...

随机推荐

  1. 使用RUBY生成二维码

    二维码现在貌似已经成为一个项目必不可少的总分了,最近在做的微信项目,更是大大的依赖于二维码,微信公众平台提供的临时二维码,局限太多,只能带一个ID,做不了太多有意义的整个,因为我们很多的二维码是需要自 ...

  2. Dubbo原理解析-监控

    Dubbo发布代码中,自带了一个简易的监控中心实现.对于一般的小业务这个监控中心应该能够满足需求,对于那些大业务量的大公司一般都会有自己的监控中心,更加丰富的功能如常用的报警短信通知等等.这章讲解分析 ...

  3. CKEditor 图片上传

    可以做如下配置: CKEDITOR.replace('editor1',{ filebrowserBrowseUrl:'/browser/browse.php', filebrowserUploadU ...

  4. 让Apache支持中文Directory的最简方法

    解决方法很简单,一句话,将httpd.conf配置文件的字符编码转换成UTF-8即可. 转换方法也很简单,在记事本中选择 文件->另存为,弹出的窗口中选择编码为UTF-8即可. 重新启动下apa ...

  5. 把一个数组向右循环移动k位要求时间复杂度为O(n)

    今晚做了下某公司的网络笔试题,好久没刷题了,现在渣得要死,里面有道程序设计题是 把一个数组向右循环移动k位要求时间复杂度为O(n) 给的方法定义为 public void solution(int a ...

  6. iOS自定义控件教程:制作一个可重用的旋钮

    当你的APP需要一些新功能时,自定义UI控件会十分有用,尤其是这些自定义控件可以在其他APP里面很好的重用.Colin Eberhart写过一篇很棒的介绍自定义UI控件的教程.这个教程涉及的是一个继承 ...

  7. 【Linux操作系统分析】设备驱动处理流程

    1 驱动程序,操作系统,文件系统和应用程序之间的关系 字符设备和块设备映射到操作系统中的文件系统,由文件系统向上提供给应用程序统一的接口用以访问设备. Linux把设备视为文件,称为设备文件,通过对设 ...

  8. linux之grep用法

    运用场景:在当前目录下查找,比如代码目录,不需要在.svn目录下,以及ctags生成的tags文件中查找: grep的--exclude-dir=参数就是为了排除某个目录的,即不包含等号后面的目录: ...

  9. 改变status bar的状态

    两种改变status bar状态的方法 一 :(全局的) 直接在当前控制器中(一般是在navigationcontroller) //- (UIStatusBarStyle)preferredStat ...

  10. 【Linux命令】Ubuntu14.04+QT5.2配置mysql

    安装qt: 官网下载qt5.2.1:qt-opensource-linux-x64-5.2.1.run 直接命令行运行:./qt-opensource-linux-x64-5.2.1.run 选择安装 ...