LXX的图论题

Description

由于lxx的图论和数据结构太弱了,大佬Z决定为lxx补一补。于是大佬Z为lxx出了一道题目,题目如下:给出一张有向图,图中有n个点,m条边,每条边上都有一个权值w,问图中是否存在满足以下条件的点i,j,…p使得不等式w[i][j] * w[j][k] * …. * w[p][i]<1成立。奈何lxx太弱了,他决定寻求你的帮助。
Input

多组输入,以文件结尾。第一行两个整数n( 1<=n<=500 ),m( 1<=m<=n*(n-1)/2 ),接下来m行,每行3个数x,y,z,(x≠y):表示x到y有一条边,权值为z(0< z<20,且保证z小数点后面最多只有一位)。
Output

如果存在满足题目所描述的式子,输出“YES”,否则输出“NO”。
Sample Input

2 2
1 2 0.9
2 1 1.2
6 4
1 2 0.1
2 4 0.8
4 1 12
4 1 15

Sample Output

NO
YES

Hint

点的编号为1~n
Source

2017年8月月赛
Author

廖璇璇

题目大意:判断是否有环边权乘积小于1
解题思路:根据对数,将乘积化为和,用bellman-ford判断是否存在负环即可。

/*
单源最短路bellman_ford算法,复杂度O(VE)
可以处理负边权图。
可以判断是否存在负环回路。返回true,当且仅当图中不包含从源点可达的负权回路
vector<Edge> E;先E.clear()初始化,然后加入所有边
点的编号从1开始(从0开始简单修改就可以了)
*/
#include<iostream>
#include<cstdio>
#include<vector>
#include<cmath>
#include<fstream>
using namespace std;
const int INF=0x3f3f3f3f;
const int MAXN=550;
double dist[MAXN];struct Edge
{int u,v;double cost;Edge(int _u=0,int _v=0,double _cost=0):u(_u),v(_v),cost(_cost){}
};vector<Edge> E;bool bellman_ford(int start,int n)//点的编号从1开始
{for(int i=1;i<=n;i++) dist[i]=INF;dist[start]=0;for(int i=1;i<n;i++){bool flag=false;for(int j=0;j<E.size();j++){int u=E[j].u;int v=E[j].v;double cost=E[j].cost;if(dist[v]>dist[u]+cost){dist[v]=dist[u]+cost;flag=true;}}if(!flag) return true;//没有负环回路}for(int j=0;j<E.size();j++)if(dist[E[j].v]>dist[E[j].u]+E[j].cost)return false;//有负环回路return true;//没有负环回路
}int main()
{int n,e;while(scanf("%d%d",&n,&e)!=EOF){if(!E.empty()) E.clear();int u,v;double c;for(int i=0;i<e;i++){scanf("%d%d%lf",&u,&v,&c);E.push_back(Edge(u,v,log2(c)));}bool mark=bellman_ford(1,n);if(mark)  printf("NO\n");else printf("YES\n");}return 0;
}

COJ1978-LXX的图论题相关推荐

  1. GDOI 2018 Day1 小学生图论题

    小学生图论题 Description 有一个点数为nnn的竞赛图,每条边的的方向等概率随机. 现在给出m" role="presentation" style=" ...

  2. csu1978LXX的图论题(floyd)

    Description 由于lxx的图论和数据结构太弱了,大佬Z决定为lxx补一补.于是大佬Z为lxx出了一道题目,题目如下:给出一张有向图,图中有n个点,m条边,每条边上都有一个权值w,问图中是否存 ...

  3. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

  4. JZOJ 5700. 【gdoi2018 day1】小学生图论题(graph)

    Description Input Output Sample Input Sample Input1 10 2 2 1 3 3 7 8 9 Sample Input2 3 0 Sample Outp ...

  5. 【NOIP模拟】图论题Graph

    题面 n点2n-2条有向边,数据先给一颗1为根的生成树边集,边目录按两部分给出 1. 开始的 n-1 条边描述了一颗以 1 号点为根的生成树,即每个点都可以由 1 号点 到达. 2. 接下来的 N-1 ...

  6. [gdoi2018 day1]小学生图论题【分治NTT】

    正题 题目大意 一张随机的nnn个点的竞赛图,给出它的mmm条相互无交简单路径,求这张竞赛图的期望强联通分量个数. 1≤n,m≤1051\leq n,m\leq 10^51≤n,m≤105 解题思路 ...

  7. 【NOIP校内模拟】图论题

    设dis[i]表示根节点到i的距离(只经过树边),再设w[i]表示i到1这条边的距离 对于u和v我们考虑两种情况 ①.当u是v的祖先 则答案为dis[v]-dis[u] ②.当u不是v的祖先,明确从1 ...

  8. 【gdoi2018 day1】小学生图论题

    题目大意: lj竞赛图. 题解: 考虑把强联通分量缩点,大概是这样的(画图水平有限): 看那些红色标记的边,强联通分量个数=红色边的个数+1 红色边的判定条件? 设它左边的点集为S,右边的为T. S到 ...

  9. 理论基础 —— 图 —— 图的存储结构

    [邻接矩阵] 图的邻接矩阵存储也称数组表示法,其方法是用一个一维数组存储图中的顶点,用一个二维数组存储图中的所有的边,存储顶点之间邻接关系的二维数组称为邻接矩阵. 设图 G=(V,E) 具有 n 个顶 ...

最新文章

  1. C++中的静态绑定与动态绑定
  2. 十个简单好用的设计技巧[SM]
  3. Altera FPGA管脚弱上拉电阻详细设置方法
  4. vue父组件异步获取动态数据传递给子组件获取不到值
  5. 在线学习新编程 技巧全攻略
  6. linux时间有几个,Linux下与文件相关的几个时间的介绍
  7. 计算机电源不能启动不了,电脑不开机,常见原因有哪些,怎么处理,黑屏怎么办...
  8. replace语句的使用---鸡肋命令
  9. 西瓜无水印视频批量下载,一个脚本就够了,手把手教你批量下载西瓜无水印高清视频。
  10. 异常:com.alibaba.druid.sql.parser.ParserException: ERROR. token : DESC, pos : 72
  11. KindEditor编辑器上传修改拿shell漏洞
  12. CatBoost参数解释
  13. 4G七问, 读懂4G的核心问题
  14. MySql数据库三种关系详解
  15. Focusky教程 | 为什么导入PPT后有的图片没有显示?
  16. Docker 快速学习手册及相关笔记 附带一些问题解决方案
  17. 数据结构之线索二叉树详细解释
  18. 汉诺塔的递归逐步详解
  19. 我的第一篇博客:Python爬取新浪财经股票页面 并用matplotlib可视化输出结果
  20. 京东购物车(动态)网页搭建,利用JavaScript实现

热门文章

  1. 测速的c语言程序,51单片机测速c程序
  2. 一篇文章让你彻底理解java中抽象类和接口
  3. 8.python之面相对象part.6(python面向对象之封装的概念)
  4. 台式计算机中如何安装CPU,台式电脑硬件如何安装
  5. 计算机如何性能测试,计算机性能测试
  6. 浅谈2017棋牌游戏的前景 运营 推广(上) 转贴
  7. php判断顺子对子,豹子对子顺子乱子 函数判断
  8. EXCEL公式测试使用Substitute
  9. Eclipse 报错:Error: Program sh not found in PATH
  10. postfix邮件管理