华为机试09.01 查找知识图谱中的实例知识(C++)

#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <set>
using namespace std;
int main()
{
    int n;
    cin >> n;
    string str1, str2, str3;
    multimap<string, string> sub;
    multimap<string, string> ins;
    for (int i = 0; i < n; i++)
    {
        cin >> str1 >> str2 >> str3;
        if (str2 == "subClassOf")
            sub.insert(pair<string, string>(str3, str1));
        else if (str2 == "instanceOf")
            ins.insert(pair<string,string>(str3,str1));
    }
    string recv;
    cin >> recv;
    set<string> res;
    for (auto i : sub)
    {
        if (i.first == recv)
        {
            for (auto j : ins)
            {
                if (j.first == i.second)
                    res.insert(j.second);
            }
        }
    }
    for (auto i : ins)
    {
        if (i.first == recv)
            res.insert(i.second);
    }
    if (res.empty())
        cout << "empty" << endl;
    for (auto i : res)
    {
        cout << i << " ";
    }
    cout << endl;
}
全部评论
用multimap和map<string, vector<string>>哪个效率高呢
点赞 回复 分享
发布于 2021-09-08 21:22
想问,这道题需要输出子类还有子类的这种情况吗?
点赞 回复 分享
发布于 2021-09-22 11:34

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
3 6 评论
分享
牛客网
牛客企业服务