void getGuanzhuCore(map<int, vector<int>> & guanzhu, map<int, set<int>> & beiguanzhu, vector<int> & lujing, int user) { for (int i = 0; i < guanzhu[user].size(); ++i) { for (int j = 0; j < lujing.size(); ++j) { beiguanzhu[guanzhu[user][i]].insert(lujing[j]); } //没有在路径中的元素,继续查找 if (find(lujing.begin(), lujing.end(), guanzhu[user][i]) == lujing.end()) { lujing.push_back(guanzhu[user][i]); getGuanzhuCore(guanzhu, beiguanzhu, lujing, guanzhu[user][i]); lujing.pop_back(); } } } void getAllGuanzhu(map<int, vector<int>> & guanzhu, map<int, set<int>> & beiguanzhu) { vector<int> guanzhulujing; for (auto it = guanzhu.begin(); it != guanzhu.end(); ++it) { guanzhulujing.clear(); guanzhulujing.push_back(it->first); getGuanzhuCore(guanzhu, beiguanzhu, guanzhulujing, it->first); } } int main() { int n = 0, m = 0; while (cin >> n >> m) { map<int, vector<int>> guanzhu; map<int, set<int>> beiguanzhu; for (int i = 0; i < m; ++i) { int u1 = 0, u2 = 0; cin >> u1 >> u2; guanzhu[u1].push_back(u2); } getAllGuanzhu(guanzhu, beiguanzhu); int cnt = 0; for (auto it = beiguanzhu.begin(); it != beiguanzhu.end(); ++it) { it->second.erase(it->first);//先删掉自己的关注 if (it->second.size() >= n - 1) cnt++; } cout << cnt << endl; } return 0; }
点赞 评论

相关推荐

牛客98820962...:个人意见,我觉得实习和项目经历要一致,达美乐感觉没必要写
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务