r
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/461c58896c9ef75f77d899b4fee0cd50.png)
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 10010;
int n, m;
vector<int>G[N];
double sum[N] = { 0 };
int sex[N] = { 0 };
bool cmp(int a, int b) {
return abs(a) < abs(b);
}
int main() {
cin >> n >> m;
for (int i = 0; i < m; i++) {
int k;
cin >> k;
for (int j = 0; j < k; j++) {
int tmp;
cin >> tmp;
G[i].push_back(tmp);
sex[abs(tmp)] = tmp;
}
}
int q[3] = {0};
cin >> q[1]>> q[2];
for(int k=1;k<=2;k++){
for (int i = 0; i < m; i++) {
bool flag = 0;
for (int j = 0; j < G[i].size(); j++) {
if (G[i][j] == q[k]) {
flag = 1;
break;
}
}
if (flag == 1) {
for (int j = 0; j < G[i].size(); j++) {
if (q[k] * G[i][j] < 0) {
sum[abs(G[i][j])]+= 1.0 / G[i].size();
}
}
}
}
}
double maxn[3];
maxn[1] = maxn[2] = -1;
vector<int>v[3];
for (int k = 1; k <= 2; k++) {
for (int i = 1; i <= 1000; i++) {
if (q[k] * sex[i] < 0) {
if (sum[i] > maxn[k]) {
maxn[k] = sum[i];
v[k].clear();
v[k].push_back(sex[i]);
}
else if (sum[i] == maxn[k]) {
v[k].push_back(sex[i]);
}
}
}
}
if (maxn[1] == sum[abs(q[2])] && maxn[2] == sum[abs(q[1])]) {
cout << q[1] << " " << q[2];
return 0;
}
for (int k = 1; k <= 2; k++) {
sort(v[k].begin(), v[k].end(), cmp);
for (int i = 0; i < v[k].size(); i++) {
cout << q[k] << " " << v[k][i] << endl;
}
}
return 0;
}
bool cmp(int a, int b) {
if (abs(a) == 1000)return true;
if (abs(b) == 1000)return false;
return abs(a) < abs(b);
}
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
if (abs(b) == 1000)return true;
if (abs(a) == 1000)return false;
return abs(a) < abs(b);
}
------------------------------------------
int main()
{
int a[10]={1,3,999,222,888,1000};
sort(a,a+10,cmp);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 10010;
int n, m;
vector<int>G[N];
int sex[N] = { 0 };
string s;
int love[3] = { 0 };
double sum[N] = { 0 };
double maxn[3] = { 0 };
vector<int>ans[N];
bool cmp(int a, int b) {
if (abs(a) == 1000)return true;
if (abs(b) == 1000)return false;
return abs(a) < abs(b);
}
int main() {
cin >> n >> m;
for (int i = 0; i < m; i++) {
int k;
cin >> k;
for (int j = 0; j < k; j++) {
cin >> s;
if (s == "0")s = "1000";
if (s == "-0")s = "-1000";
int num = stoi(s);
sex[abs(num)] = num;
G[i].push_back(num);
}
}
for (int i = 1; i <= 2; i++) {
cin >> s;
if (s == "0")s = "1000";
if (s == "-0")s = "-1000";
love[i] = stoi(s);
}
for (int k = 1; k <= 2; k++) {
for (int i = 0; i < m; i++) {
int flag = 0;
for (int j = 0; j < G[i].size(); j++) {
if (G[i][j] == love[k]) {
flag = 1;
break;
}
}
if (flag == 1) {
for (int j = 0; j < G[i].size(); j++) {
if (love[k] * G[i][j] < 0) {
sum[abs(G[i][j])] += 1.0 / G[i].size();
}
}
}
}
}
maxn[1] = maxn[2] = -1;
for (int k = 1; k <= 2; k++) {
for (int i = 1; i <= 1000; i++) {
if (love[k] * sex[i] < 0) {
if (sum[i] > maxn[k]) {
maxn[k] = sum[i];
ans[k].clear();
ans[k].push_back(sex[i]);
}
else if (sum[i] == maxn[k])
ans[k].push_back(sex[i]);
}
}
}
if (maxn[1] == sum[abs(love[2]) && maxn[2] == sum[abs(love[1])]]) {
string s1 = to_string(love[1]), s2 = to_string(love[2]);
if (love[1] == 1000)s1 = "0";
if (love[1] == -1000)s1 = "-0";
if (love[2] == 1000)s2 = "0";
if (love[2] == -1000)s2 = "-0";
cout << s1 << " " << s2 << endl;
return 0;
}
for (int k = 1; k <= 2; k++) {
sort(ans[k].begin(), ans[k].end(), cmp);
for (int i = 0; i < ans[k].size(); i++) {
string s1 = to_string(love[k]), s2 = to_string(ans[k][i]);
if (love[k] == 1000)s1 = "0";
if (love[k] == -1000)s1 = "-0";
if (ans[k][i] == 1000)s2 = "0";
if (ans[k][i] == -1000)s2 = "-0";
cout << s1 << " " << s2 << endl;
}
}
return 0;
}