#include <bits/stdc++.h>
using namespace std;
vector<int> vec[100000];//存关系图
bool vis[100000];//标记五服以内的亲属
char sex[100000];//记录性别
bool flag;//标记情侣是否为近亲
void Dfs(int x,int num)//num表示第几代,从0开始
{
if(num>=4) return; //超过五代直接退出
for(int i=0;i<vec[x].size();i++){
if(!vis[vec[x][i]]){
vis[vec[x][i]]=1;//标记出现的人
Dfs(vec[x][i],num+1);
}
else flag=1;//五服之内出现一样的人
}
}
int main()
{
int T;
cin>>T;
while(T--){
int t,fa,ma;
char ch;
cin>>t>>ch>>fa>>ma;
sex[t]=ch;
if(fa!=-1){ //-1不用保存,避免数据处理不当导致数组越界
vec[t].push_back(fa);//保存双亲
sex[fa]='M';//记录父亲性别
}
if(ma!=-1){
vec[t].push_back(ma);
sex[ma]='F';
}
}
cin>>T;
while(T--){
int x,y;
cin>>x>>y;
if(sex[x]==sex[y]) cout<<"Never Mind"<<endl; //同性
else{
memset(vis,0,sizeof(vis));
vis[x]=1;
vis[y]=1;
flag=0;
Dfs(x,0);
Dfs(y,0);
if(flag)//被标记过说明这两人为近亲
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
struct Student
{
int Scores[100];
double Average;
}stu[10005];
int StuNum,JudgeNum,OutNum;
double SortScores[10005];
void GetMaxScore(){
long int sum;
//每个学生评委打分排序
for(int k=0;k<StuNum;k++){
int t;
for (int i = 0; i <JudgeNum; i++)
{
for (int j = 0; j < JudgeNum-1; j++)
{
if (stu[k].Scores[j] > stu[k].Scores[j + 1])
{
t = stu[k].Scores[j+1];
stu[k].Scores[j + 1] = stu[k].Scores[j];
stu[k].Scores[j] = t;
}
}
}
}
//求去最高,最低分后的,平均值
for(int c=0;c<StuNum;c++){
sum=0;
for(int i=1;i<JudgeNum-1;i++){
sum+=stu[c].Scores[i];
}
SortScores[c]=stu[c].Average=sum*1.0/(JudgeNum-2);
}
//平均值排序,用两个排序是因为两次排序的数值类型不同
double t;
for (int i = 0; i <StuNum; i++)
{
for (int j = 0; j < StuNum-1; j++)
{
if (SortScores[j] > SortScores[j + 1])
{
t = SortScores[j+1];
SortScores[j + 1] = SortScores[j];
SortScores[j] = t;
}
}
}
}
int main()
{
int i;
scanf("%d %d %d",&StuNum,&JudgeNum,&OutNum);
for(i=0;i<StuNum;i++){
for(int j=0;j<JudgeNum;j++){
scanf("%d",&stu[i].Scores[j]);
}
}
GetMaxScore();
for(i=StuNum-OutNum;i<StuNum-1;i++)//用来输出最后一个没有空格
printf("%.3f ",SortScores[i]);
printf("%.3f",SortScores[i]);
}