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

  1. #include<iostream>
  2. #include<cstring>
  3. #include<map>//后来我用了一个map容器才能通过,如果自己建立数组就是不过,不知道到底哪里超出了;它明明说的是少于30个,现在做题题意也欺骗人了;
  4. using namespace std;
  5. const int N=;
  6. int ok;
  7. map<string,int>my_map;
  8. void nameinput(int n)
  9. {
  10. string name;
  11. for(int i=;i<=n;i++)
  12. {
  13. cin>>name;
  14. my_map[name]=i;
  15. }
  16. }
  17. double money[N][N];
  18. void Link(int n,int m)
  19. {
  20. //memset(money,-1,sizeof(money));
  21. for(int i=;i<=n;i++)
  22. for(int j=;j<=n;j++)
  23. money[i][j]=(i==j)?:;
  24. string name1,name2;
  25. double rate;
  26. for(int i=;i<=m;i++)
  27. {
  28. cin>>name1>>rate>>name2;
  29. money[my_map[name1]][my_map[name2]]=rate;
  30. }
  31. my_map.clear();
  32. }
  33. void deal(int n)
  34. {
  35. for(int k=;k<=n;k++)
  36. for(int i=;i<=n;i++)
  37. for(int j=;j<=n;j++)
  38. {
  39. if(money[i][j]<money[i][k]*money[k][j])
  40. money[i][j]=money[i][k]*money[k][j];
  41. }
  42. for(int i=;i<=n;i++)
  43. if(money[i][i]>)//求回路中两点距离;
  44. {
  45. ok=;break;
  46. }
  47. }
  48. int main()
  49. {
  50. int n,m;
  51. int count=;
  52. while(cin>>n&&n)
  53. {
  54. nameinput(n);
  55. cin>>m;
  56. ok=;
  57. Link(n,m);
  58. deal(n);
  59. if(ok==)cout<<"Case "<<count<<": Yes\n";
  60. else cout<<"Case "<<count<<": No\n";
  61. count++;
  62. }
  63. return ;
  64. }

下面是超时代码:

  1. #include<iostream>
  2. #include<cstring>
  3. #include<map>
  4. using namespace std;
  5. const int N=;
  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=;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=;i<=n;i++)
  23. for(int j=;j<=n;j++)
  24. money[i][j]=(i==j)?:;
  25. string name1,name2;
  26. double rate;
  27. for(int i=;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>)ok=;
  39. return;
  40. }
  41. double re=result;
  42. if(ok==)
  43. for(int i=;i<=n;i++)
  44. {
  45. if(money[sub][i]!=-&&!vis[i])
  46. {
  47. vis[i]=;
  48. re=result*money[sub][i];
  49. process(n,start,i,re);
  50. vis[i]=;
  51. }
  52. if(ok==)return;
  53. }
  54. }
  55. int main()
  56. {
  57. int n,m;
  58. int count=;
  59. while(cin>>n&&n)
  60. {
  61. memset(vis,,sizeof(vis));
  62. nameinput(n);
  63. cin>>m;
  64. ok=;
  65. Link(n,m);
  66. for(int i=;i<=n;i++)
  67. {
  68. for(int j=;j<=n;j++)
  69. if(money[i][j]!=-)
  70. {
  71. vis[j]=;
  72. process(n,i,j,1.0*money[i][j]);
  73. vis[j]=;
  74. }
  75. }
  76. if(ok==)cout<<"Case "<<count<<": Yes\n";
  77. else cout<<"Case "<<count<<": No\n";
  78. count++;
  79. }
  80. return ;
  81. }

acm1217教训的更多相关文章

  1. 新人入职100天,聊聊自己的经验&教训

    这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果你 打算去国外工作. 对Google的开发流程感 ...

  2. android socket编程用Bufferreader读取的一个失败教训

    由于我的手机需要用笔记本开的wifi,躺在床上玩手机时需要关电脑或者是要让电脑放歌的时候总是不想下床,于是我想能不能用一个APP,然后通过局域网实现在手机上对电脑进行操控呢?说干就干. 我在电脑上用的 ...

  3. Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)

    1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...

  4. Apache Storm 的历史及经验教训——Nathan Marz【翻译】

    英文原文地址 中英文对照地址 History of Apache Storm and lessons learned --项目创建者 Nathan Marz Apache Storm 最近成为了ASF ...

  5. 七年IT生涯的经验教训

     七年IT生涯的经验教训[转]我在IT界也拼打了有好几年了,但是现在和别人比较起来不是很如意.从天分上来说,我在属于智商不低的人:从技术上说,几乎没有我拿不下的:从见解上看,我是很有点子看法的人. ...

  6. 从Apache Storm学到的经验教训 —— storm的由来(转)

    阅读目录 Storm来源 初探 再探 构建第一个版本 被Twitter收购 开源的Storm 发布之后 Storm的技术演进 构建开发者社区版 离开Twitter 提交到Apache Apache孵化 ...

  7. HttpClient -- 血的教训

    HttpClient -- 血的教训 千万别用httpClient 不支持httpVersion2.0 因为这个导致项目重做

  8. 创业公司Playcafe关门大吉 创始人总结10大失败教训

    导读:互联网电视游戏网站PlayCafe的创始人马克·高登森(Mark Goldenson)日前撰文,总结了自己创业失败的十个教训.以下为文章主要内容: 一年半前,我与公司联合创始人戴维·奈格(Dev ...

  9. 记录一次centos升级gblic的教训

    前些天公司项目需要对上传的图片打水印,前端采用angularjs,后端nodejs,网上一搜,找到了一个images的库,在本地Windows环境下试了下还不错,然后就上传测试服务器(centos6. ...

随机推荐

  1. redis 在java中的使用

    1.首先下载jar包放到你的工程中 2.练习 package com.jianyuan.redisTest; import java.util.Iterator;import java.util.Li ...

  2. hdu刷题2

    hdu1021 给n,看费波纳列数能否被3整除 算是找规律吧,以后碰到这种题就打打表找找规律吧 #include <stdio.h> int main(void) { int n; whi ...

  3. 关于C#中如何使用wmi获得操作系统信息?

    最近项目中用到了windows server 2012操作系统中的存储池和ISCSI Disk的技术.前期,我们整个操作都是用power shell脚本去实现了.带来了不方便,后期要使用wmi API ...

  4. Java经典问题

    1.JAVA初学者都应该搞懂的问题 对于这个系列里的问题,每个学Java的人都应该搞懂.当然,如果只是学Java玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行 ...

  5. RedHat/CentOS利用iso镜像做本地yum源

    在这里用iso或者光盘做本地yum源的方法是差不多的,只是用光盘的话Linux系统会自动挂载,用iso镜像的或需要手动挂载,这里就说挂载iso的方法吧. (1) 创建iso存放目录和挂载目录 mkdi ...

  6. 事后分析报告(M2阶段)

    我们的项目是自选项目,一款名为备忘录锁屏MemoryDebris的软件. 在第二轮的迭代中,由于各科的大作业都集中在这一段时间,所以这段时间各个组员间的负担都比较大,但是在大家共同努力,最终我们还是交 ...

  7. Python实用技巧

    1.改变工作目录 import os os.chdir('C:/Users/Mr.Zhao') 2.搜索制定目录下的文件 1 import glob 2 glob.glob('C:/User/Mr.Z ...

  8. The New Day

    于博毅 160809107 爱好电脑研究 选大学专业的时候,把计算机类放在了第一专业,当时从小就很喜欢计算机,以前有接触过编程但仅限于看书,并没有动手实践过,选课的时候看了一下专业课程,都是我想学的 ...

  9. vi/sed等遵循的搜索正则语法

    转自:http://blog.csdn.net/lanxinju/article/details/5731843 一.查找 查找命令 /pattern<Enter> :向下查找patter ...

  10. [Redis]在Windows下的下载及安装

    1.下载 下载地址: https://github.com/MSOpenTech/redis, 下载并解压到特定的目录. 2.启动Redis服务端 CMD -> redis-server.exe ...