#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; }
点赞 8

相关推荐

不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
牛客网
牛客企业服务