posts - 58,  comments - 33,  views - 1928

采用邻接表创建无向图G ,依次输出各顶点的度。

输入格式:

输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶点数和边数。
输入第二行为顶点的信息,每个顶点只能用一个字符表示。
依次输入j行,每行输入一条边依附的顶点。

输出格式:

依次输出各顶点的度,行末没有最后的空格。

输入样例:

5 7
ABCDE
AB
AD
BC
BE
CD
CE
DE

输出样例:

2 3 3 3 3

 

#include <iostream>
#include <unordered_map> // 更为高效的哈希表实现
using namespace std;

int main() {
    int n, m;
    string s;
    unordered_map<char, int> heap; // 使用unordered_map提高查询速度

    // 输入部分
    cin >> n >> m;
    cin >> s;
    
    for (int i = 0; i < m; ++i) {
        string x;
        cin >> x;
        heap[x[0]]++;
        heap[x[1]]++;
    }

    // 输出部分
    for (int i = 0; i < s.size(); ++i) {
        if (i > 0) {
            cout << " ";
        }
        cout << heap[s[i]];
    }
    cout << endl;

    return 0;
}

 

使用说明

  • unordered_map<char, int> heap: 定义了一个无序映射,它的键是字符,值是整数。这个映射用于记录每个字符在边列表中出现的次数。
  • cin >> n >> m: 读取字符串长度和边的数量。
  • cin >> s: 读取字符串 s
  • for (int i = 0; i < m; ++i): 循环读取 m 条边,并更新每个字符在 heap 中的频次。
  • for (int i = 0; i < s.size(); ++i): 遍历字符串 s,根据 heap 中记录的频次输出每个字符的出现次数,并在不同字符之间加空格。

优势

使用 unordered_map 的主要优势在于其常量时间复杂度的插入和查找操作,这在处理大量数据时非常有用。相比之下,map 基于红黑树实现,其插入和查找操作的时间复杂度为 O(log n)。

总结

这段代码通过使用 unordered_map 提高了查询效率,使其更适合处理较大规模的数据集。在大多数情况下,unordered_map 会比 map 提供更好的性能,特别是在需要频繁插入和查找操作的场景中。

posted on   fafrkvit  阅读(8)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示