关注
第五题代码通过率总是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
相关推荐
12-07 22:32
复旦大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 找工作能把i人逼成什么样 #
16668次浏览 191人参与
# 上班到公司第一件事做什么? #
111332次浏览 762人参与
# 你今年做了几份实习? #
11210次浏览 162人参与
# 工作两年想退休了 #
205434次浏览 1820人参与
# 一上班就想____,这正常吗? #
6244次浏览 117人参与
# 七夕节你打算怎么过? #
69271次浏览 800人参与
# 运营面经 #
146290次浏览 1323人参与
# 参加过提前批的机械人,你们还参加秋招么 #
103959次浏览 1641人参与
# 如果公司降薪,你会跳槽吗? #
112490次浏览 727人参与
# 蚂蚁求职进展汇总 #
138955次浏览 1224人参与
# 运营商笔面经互助 #
189519次浏览 1795人参与
# 四大天坑是哪四家? #
91672次浏览 231人参与
# 网易求职进展汇总 #
169574次浏览 1414人参与
# 大厂面试初体验 #
84077次浏览 385人参与
# 什么样的公司千万别去 #
28581次浏览 151人参与
# 业务面应该做哪些准备 #
79463次浏览 814人参与
# 通信/硬件公司求职体验 #
178812次浏览 1025人参与
# 大学最后一个寒假,我想…… #
72680次浏览 730人参与
# 金三银四,你有感觉到吗 #
663526次浏览 6032人参与
# 大家每天通勤多久? #
64783次浏览 416人参与