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

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

下面是超时代码:

 #include<iostream>
#include<cstring>
#include<map>
using namespace std;
const int N=;
int ok;
int vis[N];
map<string,int>my_map;
string Name[N];
void nameinput(int n)
{
string name;
for(int i=;i<=n;i++)
{
cin>>name;
my_map[name]=i;
}
}
double money[N][N];
void Link(int n,int m)
{
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
money[i][j]=(i==j)?:;
string name1,name2;
double rate;
for(int i=;i<=m;i++)
{
cin>>name1>>rate>>name2;
money[my_map[name1]][my_map[name2]]=rate;
}
my_map.clear();
}
void process(int n,int start,int sub,double result)
{
if(sub==start)
{
if(result>)ok=;
return;
}
double re=result;
if(ok==)
for(int i=;i<=n;i++)
{
if(money[sub][i]!=-&&!vis[i])
{
vis[i]=;
re=result*money[sub][i];
process(n,start,i,re);
vis[i]=;
}
if(ok==)return;
}
}
int main()
{
int n,m;
int count=;
while(cin>>n&&n)
{
memset(vis,,sizeof(vis));
nameinput(n);
cin>>m;
ok=;
Link(n,m);
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
if(money[i][j]!=-)
{
vis[j]=;
process(n,i,j,1.0*money[i][j]);
vis[j]=;
}
}
if(ok==)cout<<"Case "<<count<<": Yes\n";
else cout<<"Case "<<count<<": No\n";
count++;
}
return ;
}

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. Java学习 · 初识 多线程

    多线程 1. 基础概念 a)     程序 Program i.           静态代码,指令集,应用程序执行的蓝本 b)    进程 Process i.           动态概念,正在运 ...

  2. 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8

    孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天止基本完成了对docx模块针 ...

  3. java核心技术 笔记

    一 . 总览 1. 类加载机制:jdk内嵌的class_loader有哪些,类加载过程.--后面需要补充 2. 垃圾收集基本原理,常见的垃圾收集器,各自适用的场景.--后面需要补充 3. 运行时动态编 ...

  4. [精通Python自然语言处理] Ch1 - 将句子切分为单词

    实验对比了一下三种切分方式: 1,2 : nltk.word_tokenize :  分离缩略词,(“Don't” =>'Do', "n't") 表句子切分的“,” &quo ...

  5. UVa 455 - Periodic Strings - ( C++ ) - 解题报告

    1.题目大意 求一个长度不超过80的字符串的最小周期. 2.思路 非常简单,基本就是根据周期的定义做出来的,几乎不需要过脑. 3.应该注意的地方 (1) 最后输出的方式要注意,不然很容易就PE了.不过 ...

  6. 【转】bind简单示例

    bind简单示例代码 namespace { class placeholder_ {}; placeholder_ __1; } template <typename R, typename ...

  7. idea超炫的自定义模板

    idea超炫的自定义模板   idea 有些快捷键 sout -> System.out.println() ,输入sout,idea能自动补全代码, 这种约定的快捷方式大大提高了效率, 而id ...

  8. mysql 重置 root 密码

    mysqld_safe --skip-grant-tables & UPDATE mysql.user SET authentication_string=PASSWORD('mima') W ...

  9. Python面向对象—类的继承

    一个子类可以继承父类的所有属性,不管是父类的数据属性还是方法. class Father(object): num = 0 def __init__(self): print "I'm Pa ...

  10. (二)MySQL学习笔记

    1.视图 视图是一系列select语句返回的可视化结果集,是一张虚拟表.更多介绍请查看http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh 视 ...