poj 2240 (spfa判正环)

题意:给你m种货币,给你m种货币兑换规则,问通过这些规则最后能不能盈利。eg:1美元换0.5英镑,1英镑换10法郎,1法郎换0.21美元,这样1美元能换0.5*10*0.21=1.05美元,净赚0.05美元。

思路:spfa判变大环。

#include
#include
#include
#include
#include
using namespace std;
map mp;
int tot=0,vis[105];
double g[105][105],dis[105];
bool spfa(int sta)
{
    queue q;
    memset(dis,0,sizeof(dis));
    q.push(1);
    memset(vis,0,sizeof(vis));
    dis[sta]=1;
    vis[sta]=1;
    while(!q.empty())
    {
        int f=q.front();
        q.pop();
        vis[f]=0;
        for(int i=1; i<=tot; i++)
        {
            if(dis[i]1)
                    {
                      //  cout<>n&&n)
    {
        memset(g,0,sizeof(g));
        tot=0;
        mp.clear();
        string s;
        for(int i=0; i>s;
            mp[s]=++tot;
        }
        cin>>m;
        for(int i=1; i<=tot; i++)
        {
            for(int j=1; j<=tot; j++)
            {
                if(i!=j)    g[i][j]=0;
                else g[i][j]=1;
            }
        }
        for(int i=0; i>s1>>w>>s2;
            g[mp[s1]][mp[s2]]=w;
        }
        cout<<"Case "<<++cas<<": ";
        if(spfa(1))
            cout<<"Yes"<

 

你可能感兴趣的:(最短路)