组合游戏。
import java.util.*;
public class Main {
/**
* @param args
*/
static int N;
static boolean[] cir=new boolean[100];
static boolean[] vis=new boolean[100];
static int[][] tree=new int[100][100];
static int[] sta=new int [100];
static int sp;
public static int DFS(int s){
int res=0;
vis[s]=true; sta[sp++]=s;
for(int i=0; i
if(tree[s][i]!=0){
--tree[s][i];--tree[i][s];
int temp;
if(vis[i]==false)
{temp=DFS(i)+1;}
else{
int temp1=sta[--sp];
while(temp1!=i){
cir[temp1]=true;
temp1=sta[--sp];
}
sp++;
return 1;
}
if(cir[i]==true){
res^=temp%2;
}
else{
res^=temp;
}
}
}
return res;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin =new Scanner(System.in);
int t;
while(cin.hasNextInt()){
t=cin.nextInt();
int res=0;
for(int kk=0; kk
Arrays.fill(cir,false);
Arrays.fill(vis, false);
for(int ii=0; ii<100; ++ii)
for(int jj=0; jj<100; ++jj)
tree[ii][jj]=0;
sp=0;
N=cin.nextInt();
int k,t1,t2;
k=cin.nextInt();
for(int i=0; i
t1=cin.nextInt();
t2=cin.nextInt();
++tree[t1-1][t2-1];
++tree[t2-1][t1-1];
}
res^=DFS(0);
}
if(res==0){
System.out.println("Harry");
}
else
System.out.println("Sally");
}
}
}