(不想打高精,也不想学习其他大佬的神仙写法,打了90分的错解)。

本题容易想到用拓扑排序处理,涉及分数的加法,用long long会超时,不过通分时先除后乘卡一下也可以拿90分。

结构体真是个复杂的东西,代码11行是无参数的构造函数,似乎是初始化的,分子为0,分母为1。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define ll long long
4 #define N 100005
5 ll gcd(ll a,ll b){
6 if(!b) return a;
7 return gcd(b,a%b);
8 }
9 struct FS{
10 ll fz,fm;
11 FS(){fz=0,fm=1;}
12 void chu(int x){//先除后乘
13 int g=gcd(x,fz);
14 fz/=g;
15 x/=g;
16 fm*=x;
17 }
18 }v[N];
19
20 FS add(FS A,FS B){
21 ll nfm=A.fm/gcd(A.fm,B.fm)*B.fm;//通分
22 A.fz*=nfm/A.fm;
23 B.fz*=nfm/B.fm;
24 A.fz+=B.fz;
25 A.fm=nfm;
26 nfm=gcd(A.fz,A.fm);
27 A.fz/=nfm;
28 A.fm/=nfm;
29 return A;
30 }
31
32 struct node{
33 int to,nxt;
34 }e[N*5];
35 int n,m,tot,head[N],rd[N],cd[N];
36 queue<int> q;
37 void build(int a,int b){
38 ++rd[b];
39 e[++tot].to=b;
40 e[tot].nxt=head[a];
41 head[a]=tot;
42 }
43
44 int main(){
45 scanf("%d%d",&n,&m);
46 for(int to,i=1;i<=n;i++){
47 scanf("%d",&cd[i]);
48 for(int j=1;j<=cd[i];j++){
49 scanf("%d",&to);
50 build(i,to);
51 }
52 }
53 for(int i=1;i<=m;i++)
54 v[i].fz=v[i].fm=1;
55 int p;
56 for(int i=1;i<=n;i++){
57 if(!rd[i]) q.push(i);
58 }
59 while(!q.empty()){
60 p=q.front();q.pop();
61 if(cd[p]) v[p].chu(cd[p]);//均分
62 for(int i=head[p];i;i=e[i].nxt){
63 --rd[e[i].to];
64 if(!rd[e[i].to]) q.push(e[i].to);
65 v[e[i].to]=add(v[e[i].to],v[p]);
66 }
67 }
68 for(int i=1;i<=n;i++)
69 if(!cd[i]) printf("%lld %lld\n",v[i].fz,v[i].fm);
70 return 0;
71 }

P7113 [NOIP2020] 排水系统 (拓扑排序)的更多相关文章

  1. NOIP2020 排水系统

    几度欲写,却望高精而却步,今习得__int128,君子报仇,一年不晚. NOIP2020 排水系统 DAG图,拓扑就好,核心难点在于毒瘤的分数的操作,毕竟只是T!只有分数相加,就很简单了. a/b + ...

  2. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  3. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

  4. 【BZOJ-2938】病毒 Trie图 + 拓扑排序

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 609  Solved: 318[Submit][Status][Di ...

  5. BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)

    题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...

  6. 图——拓扑排序(uva10305)

    John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...

  7. Java排序算法——拓扑排序

    package graph; import java.util.LinkedList; import java.util.Queue; import thinkinjava.net.mindview. ...

  8. poj 3687(拓扑排序)

    http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...

  9. 拓扑排序 - 并查集 - Rank of Tetris

    Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球 ...

随机推荐

  1. python 日志类

    简介 在所有项目中必不可少的一定是日志记录系统,python为我们提供了一个比较方便的日志模块logging,通常,我们都会基于此模块编写一个日志记录类,方便将项目中的日志记录到文件中. loggin ...

  2. electron 应用开发优秀实践

    vivo 互联网前端团队-Yang Kun 一.背景 在团队中,我们因业务发展,需要用到桌面端技术,如离线可用.调用桌面系统能力.什么是桌面端开发?一句话概括就是:以 Windows .macOS 和 ...

  3. UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试

    UnifyRemoteManager-多国语言绿色版v1.3-20200315,统一远程连接自动登录软件,欢迎测试 下载参考: 百度网盘:https://pan.baidu.com/s/15g-oXT ...

  4. Apache DolphinScheduler 1.3.6 功能发布说明

    参与人员 @chengshiwen.@hailin0.@wanghong1314.@ruanwenjun.@xxjingcd.@zhangguohao.@zhuangchong.@syb8535531 ...

  5. Taurus.MVC WebAPI 入门开发教程5:控制器安全校验属性【HttpGet、HttpPost】【Ack】【Token】【MicroService】。

    系列目录 1.Taurus.MVC WebAPI  入门开发教程1:框架下载环境配置与运行. 2.Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World. 3.Tau ...

  6. 一文搞懂EMAS Serverless小程序开发|电子书免费下载

    >> 快来免费下载|电子书<五天玩转 EMAS Serverless> << 点击免费下载 <五天玩转 EMAS Serverless> EMAS Se ...

  7. 前端知识之CSS(1)-css语法、css选择器(属性、伪类、伪元素、分组与嵌套)、css组合器

    目录 前端基础之css 1.关于css的介绍 2.css语法 3.三种编写CSS的方式 3.1.style内部直接编写css代码 3.2.link标签引入外部css文件 3.3.标签内直接书写 4.c ...

  8. 【java】学习路线6-静态方法、私有化方法、父类子类

    import java.util.Arrays; /* 我们可以自己创建方法(静态) 私有化方法,阻止他人实例化该方法 静态代码块只执行一次,只在加载这个所在类的时候执行 父类 - 子类 子类继承自父 ...

  9. 尝试理解Linux容器进程与宿主机共享内核到底是什么意思?

    背景 近期接触容器技术时,经常看到各类比较容器与虚拟机区别的文章中会提到:容器是共享宿主机的内核,而虚拟机则是拥有自己独立的内核,所以不可能在Linux上用容器运行windows,但是用虚拟机则可以. ...

  10. BI如何配置“花生壳”,看这一篇就够了

    花生壳作为一款免费的内网穿透软件,在软件行业备受青睐.在做好产品的同时,如何让客户轻松看到,也是非常有必要的.本篇将带领大家使用"花生壳"软件完成BI数据分析的配置.第一步:下载安 ...