hdu 1217 Arbitrage(判断负环+map)
来源:互联网 发布:为什么jbl淘宝便宜 编辑:程序博客网 时间:2024/06/06 12:30
http://acm.split.hdu.edu.cn/showproblem.php?pid=1217
判断是否出现负环?用map存储,floyd或者SPFA都可。
SPFA版
#include<iostream>#include<queue>#include<cstring> #include<cstdio>#include<map>using namespace std;const int maxn=40;map<string,int>m;double money,d[maxn],g[maxn][maxn];int t,tt=0,n,blag,vis[maxn];string s,a,b;int SPFA(int src){ queue<int>q; for(int i=0;i<n;i++) vis[i]=d[i]=0; d[src]=1.0; vis[src]=1; q.push(src); while(!q.empty()) { int u=q.front(); q.pop(); vis[u]=0; for(int i=0;i<n;i++) { if(d[i]<d[u]*g[u][i]) { d[i]=d[u]*g[u][i]; if(d[src]>1.0) return 1; if(!vis[i]) { vis[i]=1; q.push(i); } } } } return 0;}int main(){ while(cin>>n&&n) { m.clear(); for(int i=0;i<n;i++) for(int j=0;j<n;j++) g[i][j]=(i==j)?1.0:0; for(int i=0;i<n;i++) { cin>>s; m[s]=i; } cin>>t; memset(d,0,sizeof(d)); while(t--) { cin>>a>>money>>b; g[m[a]][m[b]]=money; } blag=0; for(int i=0;i<n;i++) if(SPFA(i)) { blag=1; break; } printf("Case %d: %s\n",++tt,blag?"Yes":"No"); }}
Floyd版
#include<iostream>#include<cstring> #include<cstdio>#include<map>using namespace std;const int maxn=40;map<string,int>m;double money,d[maxn][maxn];int t,tt=0,n,blag;string s,a,b;void floyd(){ for(int k=0;k<n;k++) for(int i=0;i<n;i++) for(int j=0;j<n;j++) d[i][j]=max(d[i][j],d[i][k]*d[k][j]); for(int i=0;i<n;i++) if(d[i][i]>1.0) { blag=1; return ; }}int main(){ while(cin>>n&&n) { for(int i=0;i<n;i++) { cin>>s; m[s]=i; } cin>>t; memset(d,0,sizeof(d)); while(t--) { cin>>a>>money>>b; d[m[a]][m[b]]=money; } blag=0; floyd(); printf("Case %d: %s\n",++tt,blag?"Yes":"No"); }}
阅读全文
0 0
- hdu 1217 Arbitrage(判断负环+map)
- HDU 1217 Arbitrage(最短路判断负环)
- hdu 1217 Arbitrage (floyd+map)
- HDU 1217 Arbitrage 【Floyd + map】
- hdu 1217 Arbitrage(Floyd最短路算法+map应用)
- 文章标题 HDU 1217 : Arbitrage(最短路--Floyd+map)
- Arbitrage (HDU 1217)
- HDU 1217 Arbitrage 【最短路,map+spfa】
- hdu 1217 Arbitrage (Floyd)
- hdu 1217Arbitrage(Floyd)
- HDU 1217 Arbitrage(Flody)
- HDU 1217 Arbitrage(floyd)
- (Floyd)【HDU 1217】Arbitrage
- hdu 1317 XYZZY spfa判断负环
- Arbitrage(Floyd+map)
- hdu 1217 Arbitrage 最短路 floyd+map容器
- Wormholes (判断负环)
- [ACM] hdu 1217 Arbitrage (bellman_ford最短路,判断是否有正权回路或Floyed)
- 获取数组中最大值和最小值
- ios11适配的坑
- windows 下安装jdk
- oracle数据库的备份还原
- 【更新】Aspose.Words 10月新版V17.10发布 | 附下载
- hdu 1217 Arbitrage(判断负环+map)
- 4 ARP:地址解析协议
- LESS CSS 框架简介
- JMeter--PerfMon Metrics Collector监控内存及CPU
- Delete volume
- idea快速生成常用的一些快捷键
- JAVA设计模式-单例模式(Singleton)的五种实现方式
- 如何应对高并发?
- opencv/opencv_contrib install