比赛 |
20150424 |
评测结果 |
ATTTTTTTTT |
题目名称 |
物质起源 |
最终得分 |
10 |
用户昵称 |
slyrabbit |
运行时间 |
9.005 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2015-04-24 10:34:49 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
class node
{
public:
vector<string> patner;
vector<string> son;
};
vector<node> fc;
vector<string> a;
vector<string> ans;
int n,m;
bool check;
//*******************************不要浮躁***********************************//
void init()
{
string data;
cin>>n;
for(int i=0;i<n;i++)
{
node x;
fc.push_back(x);
cin>>data;
string temp;
bool b=0;
for(int j=0;j<data.length();j++)
{
if(data[j]=='=')
{
fc[i].patner.push_back(temp);
temp.clear();
b=1;
continue;
}
if(data[j]=='+')
{
if(b==0)
fc[i].patner.push_back(temp);
else
fc[i].son.push_back(temp);
temp.clear();
continue;
}
temp+=data[j];
if(j==data.length()-1)
{
fc[i].son.push_back(temp);
}
}
}
string temp;
cin>>m;
for(int i=0;i<m;i++)
{
cin>>temp;
a.push_back(temp);
}
}
void work()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<fc[i].patner.size();j++)
{
bool b=0;
for(int k=0;k<a.size();k++)
{
if(a[k]==fc[i].patner[j])
{
b=1;
break;
}
}
if(!b) goto out;
}
for(int j=0;j<fc[i].son.size();j++)
{
bool b=0;
for(int k=0;k<m;k++)
{
if(fc[i].son[j]==a[k])
{
b=1;
break;
}
}
if(!b)
{
check=1;
a.push_back(fc[i].son[j]);
ans.push_back(fc[i].son[j]);
}
}
out:;
}
}
void print()
{
int l=ans.size();
sort(ans.begin(),ans.end());
cout<<ans.size()<<endl;
for(int i=0;i<l;i++)
cout<<ans[i]<<endl;
}
int main()
{
freopen("origin.in","r",stdin);
freopen("origin.out","w",stdout);
init();
while(1)
{
check=0;
work();
if(!check) break;
}
print();
return 0;
}