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. ...
随机推荐
- C++字符串拼接和输入
一 .char类型字符串以空字符结尾 1.以空字符结尾,空字符被写作\0,其ASCII码为0,用来标记字符串的结尾. char dog[4]={'a','b','c','d'} //不是一个字符串 ...
- HTMLTestRunner解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128)
其中HTML和数据库都是设置成utf-8格式编码,插入到数据库中是正确的,但是当读取出来的时候就会出错,原因就是python的str默认是ascii编码,和unicode编码冲突,就会报这个标题错误. ...
- POJ 3675 Telescope(简单多边形和圆的面积交)
Description Updog is watching a plane object with a telescope. The field of vision in the telescope ...
- 20145214 《Java程序设计》第4周学习总结
20145214 <Java程序设计>第4周学习总结 教材学习内容总结 继承 继承基本上就是避免多个类间重复定义共同行为.要避免在程序设计上出现重复,可以把相同的程序代码提升为父类. 关键 ...
- Calculator Part Ⅰ (代码规范化修改)
GitHub/object-oriented 本次参照的C++代码规范 有一些规范内容在文件中其实并未提及,比如:空格的使用,修改的时候真的是一头雾水--根据文件中的例子,发现了一些文字部分没有提到的 ...
- iOS- iOS 和 Android 的后台推送原理各是什么?有什么区别?
iOS 的推送iOS 在系统级别有一个推送服务程序使用 5223 端口.使用这个端口的协议源于 Jabber 后来发展为 XMPP ,被用于 Gtalk 等 IM 软件中.所以, iOS 的推送,可以 ...
- js实现倒计时60秒的简单代码
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...
- Tiny4412 LED 程序
package cn.hyc.led; import android.os.Bundle; import android.app.Activity; import android.view.Menu; ...
- 简单java死锁设计002
/** * 死锁举例 * @author lenovo * */ public class DeadlockTest { private static Object obj1 = new Object ...
- [计算机网络-应用层] FTP协议
文件传输协议:FTP 如下图所示:用户通过一个FTP用户代理与FTP交互.该用户首先提供远程主机的主机名,使本地主机的FTP客户机进程建立一个到远程主机FTP服务器进程的TCP连接.然后,该用户提供用 ...