采用邻接表创建无向图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
提供更好的性能,特别是在需要频繁插入和查找操作的场景中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用