记录编号 |
377346 |
评测结果 |
AAAAAAAEAE |
题目名称 |
查字典 |
最终得分 |
80 |
用户昵称 |
HeHe |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.780 s |
提交时间 |
2017-03-01 11:02:12 |
内存使用 |
0.43 MiB |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
using namespace std;
struct NODE{
int page;
int s[26];
NODE():page(-1){
memset(s,0,sizeof(s));
}
};
class tree{
private:
vector<NODE>k;
int new_node(){
static int tot=0;
static NODE N;
k.push_back(N);
return tot++;
}
public:
tree(){
new_node();
}
void push(const char *a,const int&num){
int i(0),now(0),d;
while(a[i]!='\0'){
if(!k[now].s[a[i]-'a']){
d=new_node();
k[now].s[a[i]-'a']=d;
}
else{
d=k[now].s[a[i]-'a'];
}
now=d;++i;
}
k[now].page=num;
}
int find(const char *a){
int i=0,now=0;;
while(a[i]!='\0'){
now=k[now].s[a[i]-'a'];
++i;
}
return k[now].page;
}
}dic;
char s[123456];
int page;
int main(){
freopen("scanword.in","r",stdin);
freopen("scanword.out","w",stdout);
int n;
cin>>n;
for(int i=1;i<=n;++i){
cin>>s>>page;
dic.push(s,page);
}
cin>>n;
for(int i=1;i<=n;++i){
cin>>s;
cout<<dic.find(s)<<'\n';
}
}