• acm1217教训


    能用容器去做的用容器做,尽量少用数组,即使自己明确其数量的上届;

    #include<iostream> 
    #include<cstring>
    #include<map>//后来我用了一个map容器才能通过,如果自己建立数组就是不过,不知道到底哪里超出了;它明明说的是少于30个,现在做题题意也欺骗人了;
    using namespace std;
    const int N=132; 
    int ok;
    map<string,int>my_map;
    void nameinput(int n)
    {
        string name;
        for(int i=1;i<=n;i++)
        {
            cin>>name;
            my_map[name]=i;
        }
    }
    double money[N][N];
    void Link(int n,int m)
    {
        //memset(money,-1,sizeof(money));
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        money[i][j]=(i==j)?1:0;
        string name1,name2;
        double rate;
        for(int i=1;i<=m;i++)
        {
            cin>>name1>>rate>>name2;
            money[my_map[name1]][my_map[name2]]=rate;
        }
        my_map.clear();
    }
    void deal(int n)
    {
        for(int k=1;k<=n;k++)
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    {
    if(money[i][j]<money[i][k]*money[k][j])
    money[i][j]=money[i][k]*money[k][j];
    }
    for(int i=1;i<=n;i++)
    if(money[i][i]>1)//求回路中两点距离;
    {
        ok=1;break;
    }
    }
    int main()
    {
        int n,m;
            int count=1;
        while(cin>>n&&n)
        {
            nameinput(n);
            cin>>m;
            ok=0;
            Link(n,m);
            deal(n);
            if(ok==1)cout<<"Case "<<count<<": Yes
    ";
            else cout<<"Case "<<count<<": No
    ";
            count++;
        }
        return 0;
    }
     

    下面是超时代码:

     1 #include<iostream> 
     2 #include<cstring>
     3 #include<map>
     4 using namespace std;
     5 const int N=132; 
     6 int ok;
     7 int vis[N];
     8 map<string,int>my_map;
     9 string Name[N];
    10 void nameinput(int n)
    11 {
    12     string name;
    13     for(int i=1;i<=n;i++)
    14     {
    15         cin>>name;
    16         my_map[name]=i;
    17     }
    18 }
    19 double money[N][N];
    20 void Link(int n,int m)
    21 {
    22     for(int i=1;i<=n;i++)
    23     for(int j=1;j<=n;j++)
    24     money[i][j]=(i==j)?1:0;
    25     string name1,name2;
    26     double rate;
    27     for(int i=1;i<=m;i++)
    28     {
    29         cin>>name1>>rate>>name2;
    30         money[my_map[name1]][my_map[name2]]=rate;
    31     }
    32     my_map.clear();
    33 }
    34 void process(int n,int start,int sub,double result)
    35 {
    36     if(sub==start)
    37     {
    38         if(result>1)ok=1;
    39         return;
    40     }
    41     double re=result;
    42     if(ok==0)
    43     for(int i=1;i<=n;i++)
    44     {
    45         if(money[sub][i]!=-1&&!vis[i])                                                      
    46         {    
    47             vis[i]=1;
    48             re=result*money[sub][i];
    49             process(n,start,i,re);
    50             vis[i]=0;
    51         }
    52         if(ok==1)return;
    53     }
    54 }
    55 int main()
    56 {
    57     int n,m;
    58         int count=1;
    59     while(cin>>n&&n)
    60     {
    61         memset(vis,0,sizeof(vis));
    62         nameinput(n);
    63         cin>>m;
    64         ok=0;
    65         Link(n,m);
    66         for(int i=1;i<=n;i++) 
    67         {
    68             for(int j=1;j<=n;j++)
    69             if(money[i][j]!=-1)
    70             {
    71                 vis[j]=1;
    72                 process(n,i,j,1.0*money[i][j]);
    73                 vis[j]=0;
    74             }
    75         }
    76         if(ok==1)cout<<"Case "<<count<<": Yes
    ";
    77         else cout<<"Case "<<count<<": No
    ";
    78         count++;
    79     }
    80     return 0;
    81 }
    82  
    What I don't dare to say is I can't!
  • 相关阅读:
    负margin实现div的左右排版
    一起来灭掉IE6!
    javac编译多个带package文件
    iis express感觉还不错
    关于sqlite使用entity framework的布署问题
    远程服务器返回了错误 NOTFOUND
    userAgent string detection in javascript
    a crossbroswer solution for parse xml fragment
    event related object in javascript
    several way to implement inheritance in javascript
  • 原文地址:https://www.cnblogs.com/sytu/p/3854203.html
Copyright © 2020-2023  润新知