import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;
public class Main{
static Scanner input = new Scanner(System.in);
public static void main(String[] args){
int count = input.nextInt();
for(int i=0;i<=count-1;i++){
//每组测试开始
int cell = input.nextInt();//牢狱数
int portal = input.nextInt();//通道数量
ArrayList<Integer>[] portaldata = new ArrayList[cell+1];//每个牢狱的通道数据;
for(int j=0;j<=portal-1;j++){
//写入portaldata
int a = input.nextInt();
int b = input.nextInt();
if(portaldata[a]==null){
portaldata[a] = new ArrayList();
}
portaldata[a].add(b);
}
boolean ans = true;
//用cell个宽搜暴力一个点能不能到达其他的点
for(int j=1;j<=cell-1;j++){
//System.out.println("testbegin,j="+j);
if(!ans)break;//前面有失败就不用再搜索了
//用HashMap记录已经到过的地方简化搜索
HashMap<Integer,Boolean> searched = new HashMap();
int searchedcount = 1;
LinkedList<Integer> list = new LinkedList();
list.add(j);
searched.put(j, true);
while(true){
if(list.isEmpty()||searchedcount>cell-j)break;
int temp = list.poll();
if(portaldata[temp]!=null){
for(int k=0;k<=portaldata[temp].size()-1;k++){
if(searched.get(portaldata[temp].get(k))==null){
//System.out.println("test");
if(portaldata[temp].get(k)>j)searchedcount++;
list.add(portaldata[temp].get(k));
}
//System.out.println("test: j="+j+",temp="+temp+",k="+k+",searchedcount="+searchedcount);
}
}
}
if(searchedcount<=cell-j){
//本轮搜索失败
ans = false;
}
}
System.out.println(ans?"I love you my love and our love save us!":"Light my fire!");
}
}
}
FFFF(WA)
最新推荐文章于 2024-02-05 09:37:26 发布