4602: [Sdoi2016]齿轮

题目连接:

http://www.lydsy.com/JudgeOnline/problem.php?id=4602

Description

现有一个传动系统,包含了N个组合齿轮和M个链条。每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x
: y。即如果只考虑这两个组合齿轮,编号为u的齿轮转动x圈,编号为v的齿轮会转动y圈。传动比为正表示若编号
为u的齿轮顺时针转动,则编号为v的齿轮也顺时针转动。传动比为负表示若编号为u的齿轮顺时针转动,则编号为v
的齿轮会逆时针转动。若不同链条的传动比不相容,则有些齿轮无法转动。我们希望知道,系统中的这N个组合齿
轮能否同时转动。

Input

有多组数据,第一行给定整数T,表示总的数据组数,之后依次给出T组数据。每一组数据的第一行给定整数N和
M,表示齿轮总数和链条总数。之后有M行,依次描述了每一个链条,其中每一行给定四个整数u,v,x和y,表示
只考虑这一组联动关系的情况下,编号为u的齿轮转动x圈,编号为v的齿轮会转动y圈。请注意,x为正整数,而y为
非零整数,但是y有可能为负数。
T<=32,N<=1000,M<=10000且x与y的绝对值均不超过100

Output

输出T行,对应每一组数据。首先应该输出标识这是第几组数据,参见样例输出。之后输出判定结果,如果N个组合
齿轮可以同时正常运行,则输出Yes,否则输出No。
输出T行,对应每一组数据。首先应该输出标识这是第几组数据,参见样例输出。之后输出判定结果,如果N个组合
齿轮可以同时正常运行,则输出Yes,否则输出No。

Sample Input

2

3 3

1 2 3 5

2 3 5 -7

1 3 3 -7

3 3

1 2 3 5

2 3 5 -7

1 3 3 7

Sample Output

Case #1: Yes

Case #2: No

Hint

题意

题解:

直接dfs下去判断就好了呀

如果遇到和之前的答案不同的,那就是no,否则就是yes

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
const double eps = 1e-6;
struct node{int x;double v;public: node(int X,double V):x(X),v(V){};
};
int n,m;
int vis[maxn];
double p[maxn];
vector<node>E[maxn];
void init(){for(int i=0;i<maxn;i++)E[i].clear();memset(vis,0,sizeof(vis));memset(p,0,sizeof(p));
}
int dfs(int x){vis[x]=1;for(int i=0;i<E[x].size();i++){int v = E[x][i].x;if(vis[v]){if(fabs(p[x]*E[x][i].v-p[v])>eps)return 0;}else{p[v]=p[x]*E[x][i].v;if(!dfs(v))return 0;}}return 1;
}
int main(){int t;scanf("%d",&t);for(int cas=1;cas<=t;cas++){init();scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int a,b;double c,d;scanf("%d%d%lf%lf",&a,&b,&c,&d);E[a].push_back((node){b,c/d});E[b].push_back((node){a,d/c});}int flag = 1;for(int i=1;i<=n;i++){if(!vis[i]){p[i]=1.0;flag = dfs(i);if(flag==0)break;}}if(flag==0)printf("Case #%d: No\n",cas);else printf("Case #%d: Yes\n",cas);}
}

转载于:https://www.cnblogs.com/qscqesze/p/5664700.html

BZOJ 4602: [Sdoi2016]齿轮 dfs相关推荐

  1. bzoj 4602: [Sdoi2016]齿轮

    4602: [Sdoi2016]齿轮 Description 现有一个传动系统,包含了N个组合齿轮和M个链条.每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x  : y.即如果只考虑这两个组合 ...

  2. 【加权并查集】bzoj 4602 齿轮

    立志用最少的代码做最高效的表达 Description 现有一个传动系统,包含了N个组合齿轮和M个链条.每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x : y.即如果只考虑这两个组合齿轮,编 ...

  3. 【周末狂欢赛7】【NOIP模拟赛】七夕祭,齿轮(dfs),天才黑客

    文章目录 T1 题目 题解 code T2 题目 题解 code T3 题目 题解 code T1 题目 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Van ...

  4. BZOJ.3990.[SDOI2015]排序(DFS)

    题目链接 操作序列的顺序显然是无关的,所以只需按特定顺序求出一个长度为\(l\)的操作序列,它对答案的贡献为\(l!\). 我们从小到大枚举所有选择.若当前为第\(i\)个,如果有一段长度为\(2^i ...

  5. BZOJ.4598.[SDOI2016]模式字符串(点分治 Hash)

    LOJ BZOJ 洛谷 点分治.考虑如何计算过\(rt\)的答案. 记\(pre[i]\)表示(之前的)子树内循环匹配了\(S\)的前缀\(i\)的路径有多少,\(suf[i]\)表示(之前的)子树内 ...

  6. BZOJ 4517: [Sdoi2016]排列计数 [容斥原理]

    4517: [Sdoi2016]排列计数 题意:多组询问,n的全排列中恰好m个不是错排的有多少个 容斥原理强行推♂倒她 $恰好m个不是错排 $ \[ =\ \ge m个不是错排 - \ge m+1个不 ...

  7. BZOJ 2115 Wc2011 Xor DFS+高斯消元

    标题效果:鉴于无向图.右侧的每个边缘,求一个1至n路径,右上路径值XOR和最大 首先,一个XOR并能为一个路径1至n简单的路径和一些简单的XOR和环 我们开始DFS获得随机的1至n简单的路径和绘图环所 ...

  8. bzoj 4517: [Sdoi2016]排列计数

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MB Submit: 637  Solved: 396 [Submit][Stat ...

  9. BZOJ 4516: [Sdoi2016]生成魔咒 [后缀自动机]

    4516: [Sdoi2016]生成魔咒 题意:询问一个字符串每个前缀有多少不同的子串 做了一下SDOI2016R1D2,题好水啊随便AK 强行开map上SAM 每个状态的贡献就是\(Max(s)-M ...

最新文章

  1. JS 点击弹出图片/ 仿QQ商城点击左右滚动幻灯片/ 相册模块,点击弹出图片,并左右滚动幻灯片...
  2. 演讲实录丨王海峰:AI 新基建加速产业智能化
  3. [论文笔记] Anatomy of a crowdsourcing platform - Using the example of microworkers.com (IMIS, 2011)...
  4. 文件数据分析制作过程【1】
  5. 输入带空格字符串的两种方法
  6. redhat配置dns服务器bind
  7. Bootstrap的坑--千万别踩
  8. 豆瓣9分,颠覆世界观的好书,每读一章就感叹一次:原来如此!(免费领)
  9. HK-2000 数采仪系统说明之 7.HK7710 DTU 简单配置说明
  10. python -屏保
  11. 第0章 Oracle的安装及相关配置
  12. redis缓存Hash操作的在主数据中的应用
  13. linux 设置显卡命令,linux查看显卡命令
  14. 传智播客java测试题_传智播客java笔试题
  15. 变分法和欧拉-拉格朗日方程(E-L equation)
  16. Mac开发-NSTextView软回车转换为硬回车
  17. 激励人生成功的10句经典英文
  18. P1293 班级聚会洛谷c++题解
  19. STM32汇编语言点亮led灯
  20. 基于AOP的优惠券发送异常哨兵监控

热门文章

  1. Scala Object
  2. C语言size_t类型
  3. Linux的文件传输工具(WinSCP)付下载连接
  4. 项目管理学习总结(16)——如何突破技术管理
  5. Java基础学习总结(43)——Java8 Lambda揭秘
  6. Mysql学习总结(2)——Mysql超详细Window安装教程
  7. Java基础学习总结(41)——JPA常用注解
  8. 计算机系班级海报,系部动态 | 电子系“五彩班栏”班级海报评比
  9. lucene 增量 全量 更新索引_搜索引擎:该如何设计你的倒排索引?
  10. linux shell 退出_dialog命令在linux系统中使用方法