poj 2240 最短路

来源:互联网 发布:淘宝上架后过期不存在 编辑:程序博客网 时间:2024/05/21 06:02

2015/1/29


无脑for for for.的最短路

一开始用map把货币名hash下就好。

(= =某沙比,输出了YES,NO,然后....“算法没错啊”....)

     #include<map>#include<queue>#include<stack>#include<cmath>#include<vector>#include<climits>#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;typedef long long ll;  #define mod 10007#define lson pos<<1,l,mid#define sc(n) scanf("%d",&n)#define rson pos<<1|1,mid+1,r#define pr(n) printf("%d\n",n)#define met(n,m) memset(n, m, sizeof(n))#define F(x,y,i) for(int i = x;i > y; i--)#define f(x,y,i) for(int i = x;i < y; i++)#define ff(x,y,i) for(int i = x;i <= y; i++)#define FF(x,y,i) for(int i = x;i >= y; i--) const int N=100500;const int inf = INT_MAX;int Max(int a,int b){return a>b?a:b;}int Min(int a,int b){return  a<b?a:b;}map<string,int>mp;double ss[105][105];int main()  {      int n, m, tot, x;    double l;    char s[1005],s1[1005];    tot = 1;    while(scanf("%d",&n)!=EOF&&n)    {        f(0,n,i)    {        scanf("%s",s);        f(0,n,j)ss[i][j] = 0.0;        mp[s] = i;    ss[i][i] = 1;    }    scanf("%d",&m);        f(0,m,i)    {       scanf("%s%lf%s",s,&l,s1);    ss[mp[s]][mp[s1]] = l;    }    f(0,n,k)    f(0,n,i)    f(0,n,j)    {    if(ss[i][j] < ss[i][k]*ss[k][j])    {    ss[i][j] = ss[i][k]*ss[k][j];    }    }        int temp = 0;    f(0,n,i)    {    if(ss[i][i]>1.0)    {    temp  = 1;    break;    }    }        if(temp)    {    printf("Case %d: Yes\n",tot++);    }    else     printf("Case %d: No\n",tot++);        mp.erase(mp.begin(),mp.end());        }    return 0;  }  


0 0
原创粉丝点击