刚刚百度笔试有做到宝箱怪的吗

求问怎么做。。。。

全部评论
宝箱怪是啥
点赞 回复 分享
发布于 2018-09-26 21:26
所有的箱子都可能是宝箱怪,没法确定真宝箱。 至于怎么看哪些一定是宝箱怪,这个就和狼人杀里的思路一样:你保的人拍你,那你就是狼。
点赞 回复 分享
发布于 2018-09-26 21:26
同求解法
点赞 回复 分享
发布于 2018-09-26 21:28
#include <iostream> #include <vector> #include <set> using namespace std; int main() { int n, t, x; cin >> n; set<int> monsters; vector<int> types(n); vector<int> nodes(n); for (int i = 0; i < n; ++i) { cin >> types[i] >> nodes[i]; nodes[i] -= 1; } int last = 0; // 1 说 2 是宝箱 2说3是宝箱, 3说1是宝箱怪,这样的矛盾判断1是宝箱怪 for (int i = 0; i < n; ++i) { int count = 0; int k = i; while (types[k] == 1) { k = nodes[k]; if (++count >= n) break; // 处理 环 } if (types[k] == 2 && nodes[k] == i) monsters.insert(i); } // 指向宝箱怪 是 宝箱的 都是 宝箱怪 while (last != monsters.size()) { last = monsters.size(); for (int i = 0; i < n; ++i) { if (types[i] == 1 && monsters.find(nodes[i]) != monsters.end()) { monsters.insert(i); } } } cout << 0 << " " << monsters.size() << endl; return 0; }
点赞 回复 分享
发布于 2018-09-26 21:42

相关推荐

过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务