关注
第五题代码通过率总是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
相关推荐

点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 第一份工作应该选高薪还是热爱? #
66678次浏览 592人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
92042次浏览 678人参与
# 秋招签约后的心态变化 #
82489次浏览 813人参与
# 听劝,这个公司值得去吗 #
486027次浏览 1700人参与
# 你觉得早上几点上班合适? #
72316次浏览 303人参与
# 学历贬值真的很严重吗? #
24418次浏览 173人参与
# 机械人与华为的爱恨情仇 #
120137次浏览 957人参与
# 一人推荐一个值得去的通信/硬件公司 #
186459次浏览 1859人参与
# 打工人的工作餐日常 #
53166次浏览 415人参与
# 哪些公司真双非友好? #
15818次浏览 82人参与
# 26届的你们有几段实习? #
43848次浏览 486人参与
# 月薪多少能在一线城市生存 #
27767次浏览 303人参与
# 双非能在秋招上岸吗? #
221704次浏览 1172人参与
# 你以为的实习VS真实的实习 #
29567次浏览 272人参与
# 今年秋招哪家公司给的薪资最良心? #
252841次浏览 1417人参与
# 你后悔自己读研吗? #
20473次浏览 240人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
117890次浏览 812人参与
# 追觅科技求职进展汇总 #
18221次浏览 120人参与
# 实习想申请秋招offer,能不能argue薪资 #
149876次浏览 932人参与
# 如何KTV领导 #
62765次浏览 472人参与