package cn.hncu.acm;
import java.util.Scanner;
public class p2094 {
static int degree[];//统计是否有人战胜它
// static int src[][];
static String name[];//存储 放进去人名
static int num;//把人名放进数组之后需要人数统计,
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
if(n==0){
break;
}
int x,y;
int count=0;
num=0;
name=new String[2*n];
degree=new int[2*n];
for(int i=0;i<n;i++){//接受字符串
String a=sc.next();
String b=sc.next();
x=conver(a);//需要索引,但是字符串不知道如何处理,所以转换整数来做。
y=conver(b);
// src[x][y]=1;//存储路径,但是在代码中用不到,所以去掉。
degree[y]++;//用来记录后一个的入度
}
for(int i=0;i<num;i++){
if(degree[i]==0){
count=count+1;//若是等于0;说明没有人能战胜,但是要是出现多个,就不能选出冠军了
}
}
if(count==1){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
}
private static int conver(String b) {//加进数组之前,必须先看数组里面存在该字符串没有,判断
for(int i=0;i<num;i++){//要是没有,直接加入,
if(name[i].compareTo(b)==0){
return i;//返回之前的分配的数值
}
}
name[num++]=b;
return num-1;
}
}
点击打开链接