POJ 1860 SPFA
来源:互联网 发布:d80军刀图纸数据 编辑:程序博客网 时间:2024/06/05 16:47
这题我看到网上很多人都用Bellman flod 写,但是我想能用Bellman flod 的一定可以用spfa 写,spfa 明显效率高很多,但是这题并不是一个标准的最短路,标准的是求最短路,判断是否有负环,这个相反,让你判断是否有正环,同理,不过是将初值都设为无穷小,求最大路就行了,判断条件是,因为如果有正环的话,就跳不出循环,所以标记一个变量,最多会有多少次,假设极端情况,每个点豆入队n次。
#include<iostream>#include<cstring>#include<queue>using namespace std;const double inf=-10000000.0;int m,n,s;double v,d[110];queue<int> q;struct NODE{int x;int y;double c;double r;}e[300];bool spfa(){int count,i,u;for(i=1;i<=n;i++)d[i]=inf;d[s]=v;q.push(s);count=0;while(!q.empty()){if(count>n*n)break;u=q.front();q.pop();count++;for(i=1;i<=2*m;i++)if(e[i].x==u&&(d[u]-e[i].c)*e[i].r>d[e[i].y]){d[e[i].y]=(d[u]-e[i].c)*e[i].r;q.push(e[i].y);}}if(count>n*n)return true;elsereturn false;}int main(){int a,b,i,j;double r1,r2,c1,c2;bool re;cin>>n>>m>>s>>v;j=1;for(i=0;i<m;i++){cin>>a>>b;cin>>r1>>c1>>r2>>c2;e[j].x=a;e[j].y=b;e[j].c=c1;e[j++].r=r1;e[j].x=b;e[j].y=a;e[j].c=c2;e[j++].r=r2;}re=spfa();if(re)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}
0 0
- poj 1860 spfa算法
- POJ 1860 SPFA
- poj 1860 SPFA
- POJ 1860 SPFA 题解
- Currency Exchange【POJ--1860】【SPFA】
- POJ 1860 Currency Exchange spfa
- Poj 1860 Currency Exchange【SPFA】
- Poj 1860 Currency Exchange ( SPFA
- [POJ 1860] Currency Exchange [spfa]
- poj 1860 Currency Exchange (spfa)
- poj 1860 Currency Exchange (SPFA)
- poj 1860 Currency Exchange(SPFA)
- POJ 1860 Currency Exchange(最短路SPFA)
- POJ 1860 Currency Exchange(spfa)
- POJ-1860-Currency Exchange-寻找正权环-spfa
- POJ 1860 - Currency Exchange(SPFA正环)
- POJ 1860 - SPFA - 正权回路
- POj 1860 Currency Exchange(SPFA判负权)
- Linux操作系统CPU信息
- unity3d,通过WWW加载图片纹理
- hql中setDate和setTimeStamp的区别
- Quartz入门实例7-处理被中断的Job
- 无序数组中最长连续序列
- POJ 1860 SPFA
- HDU-4901 The Romantic Hero DP
- 浪潮记(1):初入浪潮
- Zookeeper master和server
- 快速的批量修改重命名.net程序的命名空间
- 阿里云服务器安装配置Apache+php服务器
- 双目相机--双目视差与深度距离关系推导详解
- 事务的隔离性
- 根据经纬度查询出附近一定范围内用户