ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

情侣名

2022-08-23 15:30:08  阅读:125  来源: 互联网

标签:map cnt hashmap int 情侣 ++ 1010


 

 

 

 

 

 

 

 

解析:

主要是char  string 与 int 的转换

用map即可

构造出关系矩阵就好了

#include <bits/stdc++.h>
using namespace std;
map<string, int> index;
map<string, int> hashmap;
map<int, string> unhashmap;
map<string, int> vis;
vector<string> mm;
vector<int> cores[1010];
int line[1010][1010], girl[1010];
int n, m;
int cnt;
int used[1010];

int main()
{
    memset(line, 0, sizeof(line));
    cin >> n >> m;
    cnt = 0;
    for(int i = 0; i < n; i++)
    {
        string u, v;
        cin >> u >> v;
        int x, y;
        if(hashmap[u] == 0)
        {
            hashmap[u] = ++cnt;
            x = cnt;
        }
        else
            x = hashmap[u];
        if(hashmap[v] == 0)
        {
            hashmap[v] = ++cnt;
            y = cnt;
        }
        else
            y = hashmap[v];
        unhashmap[y] = v;
        unhashmap[x] = u;
        cores[x].push_back(y);
        cores[y].push_back(x);

    }
    for(int i = 0; i < m; i++)
    {
        string temp;
        cin >> temp;
        mm.push_back(temp);
        vis[temp] = 1;

    }


    cnt = 0;
    for(int i = 0; i < m; i++)
    {
        string name, xing = "", ming = "";
        name = mm[i];
        for(int j = 0; j < name.length(); j++)
        {
            if(name[j] >= 'a' && name[j] <= 'z')
                ming += name[j];
            else xing += name[j];
        }
        int x, y;
        if(index[name] == 0)
        {
            index[name] = ++cnt;
            x = cnt;
        }
        else
            x = index[name];
        int id = hashmap[ming];
        for(int j = 0; j < cores[id].size(); j++)
        {
            string yname = xing + unhashmap[cores[id][j]];
            if(vis[yname] == 0) continue;
            if(index[yname] == 0)
            {
                index[yname] = ++cnt;
                y = cnt;
            }
            else
                y = index[yname];

            line[x][y] = 1;
            line[y][x] = 1;

        }




    }
    int ans = 0;

    for(int i = 1; i <= cnt; i++)
    {
        for(int j = 1; j <= cnt; j++)
            if(line[i][j] == 1)
                ans++;

    }
    cout << ans / 2 << endl;



    return 0;
}

 

标签:map,cnt,hashmap,int,情侣,++,1010
来源: https://www.cnblogs.com/WTSRUVF/p/16616368.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有