文章目录
题意
题目链接
原材料和每道菜需要什么材料,能做那些菜
思路
- 拓扑排序
- 暴力
代码
// 暴力
class Solution {
public:
vector<string> findAllRecipes(vector<string>& recipes, vector<vector<string>>& ingredients, vector<string>& supplies) {
set<string> visit;
for (auto &it:supplies)
visit.insert(it);
vector<string> ans;
bool add = true;
vector<bool> hash(recipes.size(), false);
while (add)
{
add = false;
for (int i = 0; i < ingredients.size(); i++)
{
if (hash[i])
continue;
bool flag = true;
for (auto &it:ingredients[i])
if (visit.find(it) == visit.end())
{
flag = false;
break;
}
if (flag)
{
hash[i] = true;
visit.insert(recipes[i]);
ans.push_back(recipes[i]);
add = true;
}
}
}
return ans;
}
};