关注
第五题代码通过率总是33.3%,大家看看哪里错了,网络主播红人那道题 #include <iostream> #include <vector> #include <algorithm> #include<sstream> #include<string> using namespace std; typedef vector<pair<int, int> > RangeList; class UnionSet { public: UnionSet(int n ) { _set=new int[n]; for(int i=0;i<n+1;i++){ _set[i]=-1; } _n = n; } int GetRoot(int p) { while (_set[p] >= 0) //最终的根应该小于0 { p = _set[p]; } return p; } void UnionFriends(int p1, int p2) { //获取p1和p2最终属于哪个朋友圈 int root1 = GetRoot(p1); int root2 = GetRoot(p2); //将本该属于同一个朋友圈的两个朋友圈合并 if (root1 != root2) { _set[root1] = _set[root1] + _set[root2]; _set[root2] = root1; } } int friends(int n, int m, RangeList& r) { int count = 0; //朋友圈的个数 //合并朋友圈 for (int i = 0; i < m; i++) { UnionFriends(r[i].first, r[i].second); } //计算朋友圈个数 for (int i = 1; i < n + 1; i++) //跳过0号下标,没有第0个人 { if (_set[i] < 0) count++; } return count; } private: int *_set; int _n; }; int main() { RangeList intervals; int n, duisum, start, end; cin>>n>>duisum; for (int i = 0; i < duisum; ++i) { cin >> start >> end; intervals.push_back(make_pair(start, end)); } int m=intervals.size(); UnionSet us(n); int ret = us.friends(n, m, intervals); cout <<ret << endl; }
查看原帖
点赞 4
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客28967172...:阿里是真卡985学历,但腾讯和字节是对双非最友好的大厂,只要你技术到位,学院本都能给你捞进来 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习的你做了哪些离谱的工作 #
3709次浏览 58人参与
# 工作压力大,你会干什么? #
3299次浏览 89人参与
# MiniMax求职进展汇总 #
1410次浏览 25人参与
# 参加哪些竞赛对找工作有帮助? #
3738次浏览 72人参与
# 邪修省钱套路 #
2687次浏览 103人参与
# 我的付费上班经历 #
5756次浏览 103人参与
# 找实习记录 #
8086次浏览 147人参与
# AI让你的思考变深了还是变浅了? #
1132次浏览 36人参与
# 如果不上班,你会去做什么 #
2416次浏览 85人参与
# 为了入行xx岗,我学了__ #
1963次浏览 34人参与
# 简历第一个项目做什么 #
2039次浏览 45人参与
# 你找工作的时候用AI吗? #
167484次浏览 868人参与
# 如何排解工作中的焦虑 #
257930次浏览 2384人参与
# 毕业论文进行时 #
24888次浏览 146人参与
# 大厂面试初体验 #
86612次浏览 398人参与
# 机械人的薪资开到多少,才适合去? #
159522次浏览 560人参与
# 你们的毕业论文什么进度了 #
1236268次浏览 9925人参与
# 你觉得面试是靠实力还是靠运气 #
27566次浏览 313人参与
# 毕业旅行去哪玩儿 #
21866次浏览 148人参与
# 硬件人秋招进展 #
265618次浏览 3971人参与
# 职场新人体验 #
160808次浏览 1149人参与