Currency Exchange(POJ1860 判正环)
2013-08-15 09:06
288 查看
~题目链接~
http://poj.org/problem?id=1860
Sample Input
Sample Output
1.Spfa
View Code
http://poj.org/problem?id=1860
Sample Input
3 2 1 20.0 1 2 1.00 1.00 1.00 1.00 2 3 1.10 1.00 1.10 1.00
Sample Output
YES
1.Spfa
#include<stdio.h> #include<string.h> #include<stdlib.h> #define maxm 1000+10 struct node { int u,v; double x,y; } map[maxm]; double dis[maxm]; int num; int Bellman_ford(int n,int s,double k) { int i,j,flag; memset(dis,0,sizeof(dis)); dis[s]=k; for(i=0; i<n; i++) { flag=0; for(j=1; j<=num; j++) if(dis[map[j].v]<(dis[map[j].u]-map[j].y)*map[j].x) { dis[map[j].v]=(dis[map[j].u]-map[j].y)*map[j].x; flag=1; } if(!flag) break; } if(i>=n)//判断松弛后,是否存在正环 return 1; return 0; } int main() { int n,m,s,a,b,i; double k,u,v,w,z; while(~scanf("%d%d%d%lf",&n,&m,&s,&k)) { num=0; for(i=0; i<m; i++) { scanf("%d%d%lf%lf%lf%lf",&a,&b,&u,&v,&w,&z); map[++num]=((struct node){a,b,u,v}); map[++num]=((struct node){b,a,w,z}); } if(Bellman_ford(n,s,k)) printf("YES\n"); else printf("NO\n"); } return 0; }
View Code
相关文章推荐
- POJ 1860 Currency Exchange(SPFA 判断有无“正”环)
- Currency Exchange---poj1860 ( spfa, 回路,最长路)
- poj1860 Currency Exchange(bellman+spfa解法)
- POJ-1860(Bellman()重要应用)
- POJ 1860 Currency Exchange bellman_ford
- POJ 1860
- poj 1860 Currency Exchange
- POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环)
- poj1860(spfa)
- 最短路径练习-POJ 1860 Currency Exchange
- poj1860 bellman ford
- Bellman_Ford变形求最长路+正权回路或spfa——POJ 1860
- POJ 1860 Currency Exchange
- 【POJ 1860】Currency Exchange
- POJ 1860 Currency Exchange(bellman变形)
- POJ - 1860 Currency Exchange(SPFA最大路判断正环)
- poj 1860 Currency Exchange
- poj 1860 Currency Exchange
- poj 3259 虫洞 & poj 1860 货币兑换 bellman-ford解法
- poj 1860 Currency Exchange (SPFA)