You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#define _CRT_SECURE_NO_WARNINGS
|
|
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
|
|
|
|
#include <bits/stdc++.h>
|
|
|
|
using namespace std;
|
|
const int N = 1e5 + 10;
|
|
int adj[N], nxt[N], to[N], ecnt, dis[1005][1005];
|
|
|
|
inline void addEdge(int f, int t) {
|
|
ecnt++;
|
|
nxt[ecnt] = adj[f];
|
|
adj[f] = ecnt;
|
|
to[ecnt] = t;
|
|
}
|
|
|
|
void dfs(int s, int *vis) {
|
|
vis[s] = 1;
|
|
for (int e = adj[s]; e; e = nxt[e])
|
|
if (!vis[to[e]])
|
|
dfs(to[e], vis);
|
|
}
|
|
|
|
int main() {
|
|
int T, n, m;
|
|
scanf("%d", &T);
|
|
while (T--) {
|
|
ecnt = 0;
|
|
memset(adj, 0, sizeof(adj));
|
|
memset(dis, 0, sizeof(dis));
|
|
scanf("%d%d", &n, &m);
|
|
for (int i = 0, u, v; i < m; i++)
|
|
scanf("%d%d", &u, &v), addEdge(u, v);
|
|
for (int i = 1; i <= n; i++)
|
|
dfs(i, dis[i]);
|
|
bool flag = true;
|
|
for (int i = 1; i <= n && flag; i++)
|
|
for (int j = 1; j < i && flag; j++)
|
|
if ((dis[i][j] || dis[j][i]) == false)
|
|
flag = false;
|
|
puts(flag ? "I love you my love and our love save us!" : "Light my fire!");
|
|
}
|
|
return 0;
|
|
}
|