今天下午的痛。 很冲的和 Gxwar 说来题爽爽 ,然后就被这水题爽了一下午。
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #include <cstdlib> #include <list> #include <set> #include <queue> #include <stack> using namespace std; const double INF=10000000; double Map[44][44]; double dis[44]; int vis[100]; int cnt[100]; int n; int spfa(int x) { memset(cnt,0,sizeof(cnt)); for(int i =0 ;i<n;i++) dis[i]=0; dis[x]=1;vis[x]=1; memset(vis,0,sizeof(vis)); queue<int> q; q.push(x); while(!q.empty()){ int cur=q.front() ;q.pop(); if(cnt[cur]>=n) return 1; vis[cur]=0; for(int i =0 ;i<n;i++) if(Map[cur][i]){ if(dis[i]<dis[cur]*Map[cur][i]){ dis[i]=dis[cur]*Map[cur][i]; if(!vis[i]){ vis[i]=1; cnt[i]++; q.push(i); } } } } return 0; } int main() { string a,c;double b; int m; int Icase=0; map<string ,int> str; while(cin>>n,n){ for(int i=0;i<n;i++){ cin>>a; str[a]=i; } scanf("%d",&m); for(int i =0;i<n;i++) for(int j=0;j<n;j++) Map[i][j]=0; for(int i= 0;i< m;i++){ cin>>a>>b>>c;int t=str[a];int t1=str[c]; Map[t][t1]=b; } int flag=0; for(int i= 0;i<n;i++){ if(spfa(i)){flag=1;break;}; } printf("Case %d: ",++Icase); if(flag) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }
poj2240Arbitrage最长路
时间: 2024-10-12 12:09:43