COJ1978-LXX的图论题
来源:互联网 发布:淘宝卖店铺 编辑:程序博客网 时间:2024/06/06 04:50
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;}
阅读全文
0 0
- COJ1978-LXX的图论题
- CSU1978: LXX的图论题
- CSUOJ-1978: LXX的图论题(Flyod)
- CSU 1978: LXX的图论题
- CSU1978-LXX的图论题-SPFA判环
- 挖个坑的图论题
- 我完成的图论题
- 图论题
- CF827D,巧妙的图(树)论题
- csu1978LXX的图论题(floyd)
- 悲剧的数论题
- POJ 图论题目
- POJ图论题集
- POJ图论题目
- 图论题目总结
- POJ图论题~
- POJ 图论题集
- 图论题集
- 常用shell(1):shell获取系统当前时间戳
- 【寒江雪】C++内存对齐原则
- POJ1988 Cube Stacking(并查集的应用)
- Retrofit 中设置 OkHttp 拦截器,保存和添加 Cookie
- FrameBuffer之register_framebuffer
- COJ1978-LXX的图论题
- C++/CLI 窗体程序通过空间的name操纵控件
- spring AOP
- Codeforces 839C Journey(dfs+概率)
- Hadoop系列之初识MapReduce(1)
- 徒手撸个http 服务器(二) ----epoll系列函数
- leetcode[Minimum Absolute Difference in BST]//待整理多种解法
- 一个诡异的Java问题
- COJ1979-古怪的行列式