problemscpp
A collection of my answers to algorithm problems in c++.
函数
pat::a::a7_3 命名空间参考

7-3 Leader of the Opinion Leaders 更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (a7_3, case1)
 

详细描述

7-3 Leader of the Opinion Leaders

函数说明

◆ main()

int pat::a::a7_3::main ( istream &  cin,
ostream &  cout 
)

在文件 pat.cpp5158 行定义.

5158 {
5159 int n;
5160 int t;
5161 cin >> n >> t;
5162 vector out(n + 1, 0);
5163 vector in(n + 1, 0);
5164 vector<unordered_set<int>> following(n + 1);
5165 unordered_map<int, int> kols;
5166 for(int i = 1; i <= n; i++) {
5167 int m;
5168 cin >> m;
5169 out[i] += m;
5170 while(m-- != 0) {
5171 int u;
5172 cin >> u;
5173 in[u]++;
5174 following[i].insert(u);
5175 }
5176 }
5177 for(int i = 1; i <= n; i++) {
5178 if(out[i] == 0 || in[i] / following[i].size() >= t) {
5179 if(!kols.contains(i)) {
5180 kols[i] = 0;
5181 }
5182 }
5183 }
5184 for(const auto &kol: kols) {
5185 for(const auto &fo: following[kol.first]) {
5186 if(kols.contains(fo)) {
5187 kols[fo]++;
5188 }
5189 }
5190 }
5191 int maximum = 0;
5192 for(auto &kv: kols) {
5193 maximum = max(maximum, kv.second);
5194 }
5195 vector<int> ans;
5196 for(auto &kv: kols) {
5197 if(kv.second == maximum) {
5198 ans.emplace_back(kv.first);
5199 }
5200 }
5201 sort(ans.begin(), ans.end());
5202 for(int i = 0; i < ans.size(); i++) {
5203 cout << ans[i];
5204 if(i != ans.size() - 1) {
5205 cout << ' ';
5206 }
5207 }
5208 return 0;
5209 }

被这些函数引用 TEST().

◆ TEST()

pat::a::a7_3::TEST ( a7_3  ,
case1   
)

在文件 pat_test.cpp2337 行定义.

2337 {
2338 istringstream in("10 3\n"
2339 "3 9 3 8\n"
2340 "2 1 3\n"
2341 "2 9 7\n"
2342 "3 2 7 5\n"
2343 "3 6 3 7\n"
2344 "2 7 3\n"
2345 "1 2\n"
2346 "2 3 9\n"
2347 "1 10\n"
2348 "1 3");
2349 auto out = ostringstream();
2350 main(in, out);
2351 ASSERT_EQ("7 9", out.str());
2352 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().