CSU 1978: LXX的图论题
来源:互联网 发布:8080端口如何开启 编辑:程序博客网 时间:2024/06/06 00:54
CSU 1978: 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 21 2 0.92 1 1.26 41 2 0.12 4 0.84 1 124 1 15
Sample Output
NOYES
Hint
点的编号为1~n
Source
2017年8月月赛
Author
廖璇璇
题目大意:
问是否能在图中找到一个环,满足环上所有边权的乘积小于1。
思路1: 将权值转化为对数 spfa判断是否存在负环
思路2: floyd变形
#include <iostream>#include <cstdio>using namespace std;double e[505][505];const double inf = 99999;int n,m;int main(){ while(scanf("%d%d",&n,&m) != EOF) { int u,v;double w; for(int i = 1 ; i <= n ; i++) for(int j = 1 ; j <= n ; j++) e[i][j] = inf; for(int i = 0 ; i < m ; i++) { scanf("%d%d%lf",&u,&v,&w); e[u][v] = min(e[u][v],w); } for(int k = 1 ; k <= n ; k++) for(int i = 1 ; i <= n ; i++) for(int j = 1 ; j <= n ; j++) e[i][j] = min(e[i][j],e[i][k]*e[k][j]); bool flag = false; for(int i = 1 ; i <= n ; i++) if(e[i][i] < 1) { flag = true; break; } printf("%s\n",flag ? "YES" : "NO"); } return 0;}
阅读全文
1 0
- CSU 1978: LXX的图论题
- CSUOJ-1978: LXX的图论题(Flyod)
- COJ1978-LXX的图论题
- CSU1978: LXX的图论题
- CSU1978-LXX的图论题-SPFA判环
- CSU 1970 LXX数
- csu A(1970): LXX数
- CSU 1970:LXX数(数学?)
- 挖个坑的图论题
- 我完成的图论题
- 图论题
- CF827D,巧妙的图(树)论题
- csu1978LXX的图论题(floyd)
- CSU OJ 1803 2016 数论题? 机智题。。
- 悲剧的数论题
- POJ 图论题目
- POJ图论题集
- POJ图论题目
- 日期计算
- socket(php)(短连接)(循环发count次,但是每次都得重新连接,会自动断开)整理版本2
- hadoop2.x之IO:MapReduce压缩
- 判断合法的压缩字符
- 数据结构实验之查找一:二叉排序树
- CSU 1978: LXX的图论题
- Mybatis 随手记
- Largest Rectangle in a Histogram
- 博弈——kiki's game
- centos7(deepin)编译安装php7.1.11
- 饿了么项目(三)
- PyOpenCL教程(2)
- socket(php)(不确定是否是长连接)(一次连接,多次接受,发送特定字符时关闭连接)整理版本3
- [kuangbin]莫比乌斯反演——入门