给你一个有向图,让你求是否能从该图任意两点之间是否能从一点到达另一点。所以connect二维数组记录是否可以到达,若存在两点不能联通,则no
#include<bits/stdc++.h>
using namespace std;
#define maxn 1001
int t;int a,b;
bool vis[maxn];
bool con[maxn][maxn];
int n,m;bool flag;
vector<int> vec[maxn];
void dfs(int s, int num)
{
con[num][s] = 1;
con[s][num] = 1;
for(int i = 0; i < vec[s].size(); i++)
{
if(!vis[vec[s][i]])
{
vis[vec[s][i]] = 1;
dfs(vec[s][i], num);
}
}
}
int main()
{
scanf("%d",&t);
while(t--)
{
memset(con, 0, sizeof(con));
for(int i = 0; i<maxn;i++)
vec[i].clear();
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; i++)
{
scanf("%d%d",&a,&b);
vec[a].push_back(b);
}
flag = 0;bool check = 0;
for(int i = 1; i <= n; i++)
{
memset(vis, 0, sizeof(vis));
vis[i] = 1;
dfs(i, i);
}
for(int i = 1;i<=n;i++)
{
for(int j = 1; j<=n;j++)
{
if(!con[i][j])
{
flag = 1;
break;
}
}
}
puts(!flag?"I love you my love and our love save us!":"Light my fire!");
}
}