L2-028 秀恩爱分得快

题目详情 - L2-028 秀恩爱分得快 (pintia.cn)

模拟题:坑点是0的性别

#include
#include
#include
#include
#include
using namespace std;
const int N = 1010;
bool sex[N];
double q[N][N];

void print(int a,int b){
	if(!sex[a]) cout<<'-';
	cout<sync_with_stdio(false);
	cout.tie(0);
	int n,m;
	cin>>n>>m;
	while(m--){
		int k; cin>>k;
		double qm = 1.0/k;
		vector ls;
		while(k--){
			string x; cin>>x;
			int num = abs(stoi(x));
			if(x[0] != '-') sex[num] = 1;
			for(int i = 0; i < ls.size(); i++)//计算两两亲密度
				if(sex[num] != sex[ls[i]]){
					q[num][ls[i]] += qm;
					q[ls[i]][num] += qm;
				}
			ls.push_back(num);
		}
	}
		
	int a,b; cin>>a>>b;
	a = abs(a), b = abs(b);
	double max1 = 0, max2 = 0;;
	for(int i = 0; i < n; i++){
		if(sex[a] != sex[i])
			max1 = max(max1,q[a][i]);
			
		if(sex[b] != sex[i])
			max2 = max(max2,q[b][i]);
	}
	
	if(q[a][b] == max1 && q[b][a] == max2){
		print(a,b);
		return 0;
	}
	
	for(int i = 0; i < n; i++)
		if(q[a][i] == max1) 
			print(a,i);
			
	for(int i = 0; i < n; i++)
		if(q[b][i] == max2) 
			print(b,i);
	
	return 0;
} 

你可能感兴趣的:(算法,c++,数据结构,算法)