Arbitrage
🧩 Syntax:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
void vout(vector<vector<float>>&v,ll n)
{
for(ll i=1;i<n;i++)
{
for(ll j=1;j<n;j++)
{
cout<<v[i][j]<<" ";
}
cout<<endl;
}
}
void floyd_warshall(vector<vector<float>>&cost)
{
for(ll k=1;k<cost.size();k++)
{
for(ll i=1;i<cost.size();i++)
{
for(ll j=1;j<cost.size();j++)
cost[i][j]=max(cost[i][j],cost[i][k]*cost[k][j]);
}
}
}
int main()
{
ll i,j,k,n=1,m,cs=1;
string x,y;
float z;
string s;
map<string,ll>mp;
while(n)
{
cin>>n;
if(n==0)continue;
for(ll i=1;i<=n;i++)
{
cin>>s;
mp[s]=i;
}
cin>>m;
vector<vector<float>>cost(n+1,vector<float>(n+1,0));
for(ll i=1;i<=n;i++)
cost[i][i]=1;
for(ll i=0;i<m;i++)
{
cin>>x>>z>>y;
cost[mp[x]][mp[y]]=z;
}
floyd_warshall(cost);
//vout(cost,cost.size());
ll flg=0;
for(ll i=1;i<=n;i++)
{
if(cost[i][i]<=1)
flg=1;
}
if(!flg)
cout<<"Case "<<cs<<": YES"<<endl;
else
cout<<"Case "<<cs<<": NO"<<endl;
cs++;
}
}