acm1217教训
能用容器去做的用容器做,尽量少用数组,即使自己明确其数量的上届;
#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教训的更多相关文章
- 新人入职100天,聊聊自己的经验&教训
这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果你 打算去国外工作. 对Google的开发流程感 ...
- android socket编程用Bufferreader读取的一个失败教训
由于我的手机需要用笔记本开的wifi,躺在床上玩手机时需要关电脑或者是要让电脑放歌的时候总是不想下床,于是我想能不能用一个APP,然后通过局域网实现在手机上对电脑进行操控呢?说干就干. 我在电脑上用的 ...
- Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)
1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...
- Apache Storm 的历史及经验教训——Nathan Marz【翻译】
英文原文地址 中英文对照地址 History of Apache Storm and lessons learned --项目创建者 Nathan Marz Apache Storm 最近成为了ASF ...
- 七年IT生涯的经验教训
七年IT生涯的经验教训[转]我在IT界也拼打了有好几年了,但是现在和别人比较起来不是很如意.从天分上来说,我在属于智商不低的人:从技术上说,几乎没有我拿不下的:从见解上看,我是很有点子看法的人. ...
- 从Apache Storm学到的经验教训 —— storm的由来(转)
阅读目录 Storm来源 初探 再探 构建第一个版本 被Twitter收购 开源的Storm 发布之后 Storm的技术演进 构建开发者社区版 离开Twitter 提交到Apache Apache孵化 ...
- HttpClient -- 血的教训
HttpClient -- 血的教训 千万别用httpClient 不支持httpVersion2.0 因为这个导致项目重做
- 创业公司Playcafe关门大吉 创始人总结10大失败教训
导读:互联网电视游戏网站PlayCafe的创始人马克·高登森(Mark Goldenson)日前撰文,总结了自己创业失败的十个教训.以下为文章主要内容: 一年半前,我与公司联合创始人戴维·奈格(Dev ...
- 记录一次centos升级gblic的教训
前些天公司项目需要对上传的图片打水印,前端采用angularjs,后端nodejs,网上一搜,找到了一个images的库,在本地Windows环境下试了下还不错,然后就上传测试服务器(centos6. ...
随机推荐
- 测试模拟 白屏 / FOUC
白屏和FOUC 白屏与无样式内容闪烁(FOUC)是因为不同浏览器加载与显示页面的机制不同而造成的. 我们可以通过一个实验来进行测试和模拟白屏.FOUC的现象,让我们更好的理解白屏.FOUC. 测试de ...
- [知识库:python-tornado]异步调用中的上下文控制Tornado stack context
异步调用中的上下文控制Tornado stack context https://www.zouyesheng.com/context-in-async-env.html 这篇文章真心不错, 非常透彻 ...
- CDH问题集
1.在CM中添加主机报JDK错误 手动在机器上安装oracle-jdk1.7+update64.然后在CM中选择不安装oracle-jdk即可. 2.HostMoinitor无法与server联系 查 ...
- HADOOP docker(五):hadoop用户代理 Proxy user
1.hadoop用户代理简介2.配置3.实验 1.hadoop用户代理简介 hadoop用户代理功能的作用是让超级用户superuser模拟一个普通用户来执行任务.比如用户joe通过oozie提交一个 ...
- [leetcode-670-Maximum Swap]
Given a non-negative integer, you could swap two digits at most once to get the maximum valued numbe ...
- Spark GraphX 2
顶点:VertexRDD 边:EdgeRDD.Edge.EdgeDirection Triplet:EdgeTriplet 存储:PartitionStrategy 通常的存储方式有两种: ...
- Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- TCP系列18—重传—8、FACK及SACK reneging下的重传
一.介绍 FACK的全称是forward acknowledgement,FACK通过记录SACK块中系列号最大(forward-most)的SACK块来推测丢包信息,在linux中使用fackets ...
- 转Web开发的发展史---Web开发技术的演变
转自:http://blog.csdn.net/zzzkk2009/article/details/9849431 在接下来的几个月时间里,我打算写一系列关于完整web开发的文章.这第一篇文章虽然有所 ...
- AjaxPro怎么用
AjaxPro是首家支持以各种方式通过javascript访问服务端.net的免费库,类似于SAJAX.它能把Javascript请求发送到.NET方法,服务端传回给Javascript,甚至包括串行 ...