【bzoj4602】[Sdoi2016]齿轮
2024-08-30 03:26:06
dfs,连边,边权为比值,赋值搜索,遇到矛盾时退出
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; typedef long long LL;
typedef double DB; #define eps 1e-8
#define M 10010
#define N 1010 struct edge
{
int to,next;
DB a;
}e[M<<1];
int head[M<<1];
int cnt; int T,n,m;
int yjy; int x,y,u,v;
int p[N<<1]; DB f[M<<1]; void link(int u,int v,DB x)
{
e[++cnt]=(edge){v,head[u],x};
head[u]=cnt;
} int dfs(int x)
{
p[x]=1;
for (int i=head[x];i!=-1;i=e[i].next)
{
int t=e[i].to;
if (p[t]==0)
{
f[t]=f[x]*e[i].a;
if (!dfs(t))
return 0;
}
else if ((f[x]*e[i].a-f[t])>eps)
return 0;
}
return 1;
} int main()
{
scanf("%d",&T);
while (T--)
{
cnt=0;
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
head[i]=-1,p[i]=0,f[i]=0;
for (int i=1;i<=m;i++)
{
scanf("%d%d%d%d",&u,&v,&x,&y);
link(v,u,1.0*x/y);
link(u,v,1.0*y/x);
}
bool flag=false;
for (int i=1;i<=n;i++)
if (!p[i])
{
f[i]=1.0;
if (!dfs(i))
{
flag=true;
break ;
}
}
printf("Case #%d: ",++yjy);
if (!flag)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
最新文章
- 【转】logback logback.xml常用配置详解(三) <;filter>;
- c# Dictionary的遍历和排序
- 关于C++虚函数的一点点~~
- 在ubuntu下配置apache运行python脚本
- 使用npoi.dll导出数据到excel
- HeadFirst 12 (web应用安全)
- 团队博客作业Week1 Team Homework #3软件工程在北航
- Callable与Future的简单介绍
- NodeJs随心学习(一)之UEditor开源项目部署
- [Android] 输入系统(一)
- 支付宝开通海外退税 阿里腾讯暗战跨境O2O_21世纪网
- 我和小美的撸码日记(1)之软件也需靠脸吃饭,带您做张明星脸(附后台经典框架 DEMO 下载)
- ISP图像质量自动化测试方法
- MVC无刷新查询,PagedList分页控件使用,导出Excel
- 《深入理解Java虚拟机》-----第7章 虚拟机类加载机制——Java高级开发必须懂的
- (二)Knockout 文本与外观绑定
- postgis创建空间数据库,导入shp数据
- Vue的href动态拼接绑定
- POJ_1185_炮兵阵地 dp+状态压缩
- feign接口调用异常的解决方向
热门文章
- filezilla server FTP 安装报错 ";could not load TLS network. Aborting start of administration interface";
- Bullet:MySQL增强半同步参数rpl_semi_sync_master_wait_point值AFTER_SYNC和AFTER_COMMIT的对比实验
- [Python3网络爬虫开发实战] 1.4.3-Redis的安装
- c++基础_时间转换
- ruby cucumber安装
- Anaconda换源及常用命令
- Leetcode 142.环形链表II
- poj 1182用向量的思考模式
- POJ 2828 Buy Tickets (线段树 || 树状数组)
- 用ReentrantLock和Condition实现生产者和消费者模式