2016 360笔试题------找镇长
public class Main {
public static void main(String[] args) {
int count, n ,m;
int relation [][];
int x, y;
int result;
Scanner s = new Scanner(System.in);
int number = s.nextInt(); //保存数据的组数
while(number-- > 0){
count = 0; //记录是不是一组数据。除掉开头的第一行
n = s.nextInt();
m = s.nextInt();
relation = new int [n][n]; //创建一个二维的关系数组,排序从0開始的
for(int i=0; i<n; i++) //初始化数组
relation[i][i] = 1; //自己认识自己
while(count < m){//这是一组数据
count++;
x = s.nextInt();
y = s.nextInt();
relation[x-1][y-1] = 1; //此关系成立 ----->表示x认识y
}
result = judge(relation); //找出镇长的合适人选
if(result == 0)
System.out.println(0);
else{
System.out.println(1);
System.out.print(result);
}
System.out.println();
}
s.close();
}
private static int judge(int[][] relation) {
for(int i=0; i<relation.length; i++){
boolean flag = true; //标记是否全部人都认识他
for(int j=0; j<relation.length; j++){
if(relation[j][i] == 1){ //j认识i
}else{
flag = false;
break;
}
}
if(flag){ //全部人都认识i,那么要推断是否i认识除自己外的其它人
for(int k=0; k<relation.length; k++)
if(i!=k && relation[i][k]==1){ //认识了其它人
flag = false;
break;
}
}
if(flag){//满足条件,并且满足这样条件的仅仅有一个人
return i+1;
}
}
return 0;
}posted on 2017-07-17 14:03 cynchanpin 阅读(147) 评论(0) 收藏 举报
浙公网安备 33010602011771号