UVALive 6467 Strahler Order 拓扑排序

时间:2021-08-31 00:00:03

这题是今天下午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&Tab;Strahler Order

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

  3. uvalive 4255 Guess(拓扑排序)

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

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

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

  5. 【二分&plus;拓扑排序】Milking Order &commat;USACO 2018 US Open Contest&comma; Gold&sol;upc&lowbar;exam&lowbar;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. tp5 model 的数据自动完成

    auto属性自动完成包含新增和更新操作 namespace app\index\model; use think\Model; class User extends Model { protected ...

  2. vs2012 发布web应用程序

    Visual Studio 2012 Visual Studio Express 2012 for Web 与 的Visual Studio 2010  Visual Studio Web发布更新 与 ...

  3. &lpar;转&rpar;无法将类型为&OpenCurlyDoubleQuote;Microsoft&period;Office&period;Interop&period;Word&period;ApplicationClass”的 COM 对象强制转换为接口类型&OpenCurlyDoubleQuote;Microsoft&period;Office&period;Interop&period;Word&period;&lowbar;Application”。此操作失败的原因是对 IID 为&OpenCurlyDoubleQuote;&lbrace;00020970-

    HRESULT:0x80030002 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft ...

  4. 对于RegExp反向引用的一点理解

    置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<关于js的Array.prototype.slice.call> 作者主页:myvin 博主QQ:85 ...

  5. iOS7与iOS8的比較

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1c2h1d2VpMDIyNA==/font/5a6L5L2T/fontsize/400/fill/I0 ...

  6. &lbrack;ZOJ1610&rsqb;Count the Colors&lpar;线段树,区间染色,单点查询&rpar;

    题目链接:http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=1610 题意:给一个长8000的绳子,向上染色.一共有n段被染色,问染 ...

  7. 【CF】283D Tennis Game

    枚举t加二分判断当前t是否可行,同时求出s.注意不能说|a[n]| <= |3-a[n]|就证明无解,开始就是wa在这儿了.可以简单想象成每当a[n]赢的时候,两人都打的难解难分(仅多赢一轮): ...

  8. popupwindow那些坑

    1. new PopupWindow(vw, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 如果 ...

  9. sql的日期和时间函数–date&lowbar;format

    Mysql的日期和时间函数–date_format   DATE_FORMAT(date,format)依照 format 字符串格式化 date 值.下面的修饰符可被用于 format 字符串中:修 ...

  10. 3&period; 原子变量-CAS算法

    1. 是什么 ? 2. CAS算法模拟 package com.gf.demo03; public class TestCompareAndSwap { public static void main ...