社区讨论

晕了已经,怎么样都不知道哪里错了

P13478[GCJ 2008 AMER SemiFinal] Mixing Bowls参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@miv7pjyl
此快照首次捕获于
2025/12/07 12:18
2 个月前
此快照最后确认于
2025/12/09 22:25
2 个月前
查看原帖
CPP
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
unordered_map <string, vector<string>> mix_ingredients;
vector <int> max_bowl;
int max_bowls;
int dfs(const string& mix_name)
{
	int child_mix_count = 0;
	for (const string& ing : mix_ingredients[mix_name])
	{
		if (isupper(ing[0]))
		{
			dfs(ing);
			child_mix_count++;
		}
	}
	int current_bowls = child_mix_count + 1;
	if (current_bowls > max_bowls)
	{
		max_bowls = current_bowls;
	}
	return current_bowls;
}
int main()
{
	int C;
	cin >> C;
	for (int case_num = 1;case_num <= C;++case_num)
	{
		int N;
		cin >> N;
		mix_ingredients.clear();
		string final_mix;
		for (int i = 0;i < N;++i)
		{
			string mix_name;
			int M;
			cin >> mix_name >> M;
			if (i == 0)
			{
				final_mix = mix_name;
			}
			vector <string> ings(M);
			for (int j = 0;j < M;++j)
			{
				cin >> ings[j];
			}
			mix_ingredients[mix_name] = ings;
		}
		max_bowls = 0;
		dfs(final_mix);
		max_bowl.push_back(max_bowls);
	}
	int num = 1;
	for (auto p = max_bowl.begin();p != max_bowl.end();p++)
	{
		cout << "Case #" << num << ": " << max_bowl[num - 1] << endl;
		num++;
	}
}

回复

3 条回复,欢迎继续交流。

正在加载回复...