#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_map>
#include<string>
using namespace std;
#define MX 1010
#define EPS 1e-7
vector<vector<double>> g(MX, vector<double>(MX));
vector<int> sex(MX);
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, m;
cin>>n>>m;
while(m--){
int k;
cin >> k;
vector<int> v1,v2;
for(int i=0;i<k;++i){
string s;
cin >> s;
int x=abs(stoi(s));
sex[x] = (s[0] == '-' ? 1 : 2);
(s[0] == '-' ?v1:v2).emplace_back(x);
}
double kk=1.0/k;
int sz1=v1.size(),sz2=v2.size();
for (int i = 0; i < sz1; ++i)
for (int j = 0; j < sz2;++j){
g[v1[i]][v2[j]] += kk;
g[v2[j]][v1[i]] += kk;
}
}
string A, B;
cin>>A>>B;
int x = abs(stoi(A));
int y = abs(stoi(B));
sex[x] = A[0] == '-' ? 1 : 2;
sex[y] = A[0] == '-' ? 2 : 1;
vector<string> sign(n);
for(int i=0;i<n;++i)
sign[i] = sex[i] == 1 ? "-" : "";
double ma ,mb = 0;
for(int i=0;i<n;++i){
if(sex[i]!=sex[x])
ma = max(ma, g[x][i]);
if(sex[i]!=sex[y])
mb = max(mb, g[y][i]);
}
if(abs(ma-mb)<EPS&&abs(g[x][y]-ma)<EPS)
cout << sign[x] << x << " " << sign[y] << y << endl;
else {
for(int i=0;i<n;++i)
if(abs(g[x][i]-ma)<EPS&&sex[x]!=sex[i])
cout << sign[x] << x << " " << sign[i] << i << endl;
for(int i=0;i<n;++i)
if(abs(g[y][i]-mb)<EPS&&sex[y]!=sex[i])
cout << sign[y] << y << " " << sign[i] << i << endl;
}
return 0;
}
L2-028 秀恩爱分得快 (25 分)
最新推荐文章于 2022-08-26 14:18:16 发布