2184-Friends ZCMU

针对数学猜想,即在任意六人中必有三人互识或三人互不识的问题,本篇通过编程验证这一猜想是否同样适用于五人的情况。输入五人间的相识关系,并判断是否存在三人群体完全相识或完全不相识。

Description

One day Igor K. stopped programming and took up math. One late autumn evening he was sitting at a table reading a book and thinking about something.

The following statement caught his attention: "Among any six people there are either three pairwise acquainted people or three pairwise unacquainted people"

Igor just couldn't get why the required minimum is 6 people. "Well, that's the same for five people, too!" − he kept on repeating in his mind. − "Let's take, say, Max, Ilya, Vova − here, they all know each other! And now let's add Dima and Oleg to Vova − none of them is acquainted with each other! Now, that math is just rubbish!"

Igor K. took 5 friends of his and wrote down who of them is friends with whom. Now he wants to check whether it is true for the five people that among them there are either three pairwise acquainted or three pairwise not acquainted people.

Input

The first line contains an integer m (0≤m≤10), which is the number of relations of acquaintances among the five friends of Igor's.

Each of the following m lines contains two integers ai and bi (1≤ai,bi≤5;aibi), where (ai,bi) is a pair of acquainted people. It is guaranteed that each pair of the acquaintances is described exactly once. The acquaintance relation is symmetrical, i.e. if x is acquainted with y, then y is also acquainted with x.

Output

Print "FAIL", if among those five people there are no either three pairwise acquainted or three pairwise unacquainted people. Otherwise print "WIN。

Examples

Input

4
1 3
2 3
1 4
5 3

Output

WIN

Input

5
1 2
2 3
3 4
4 5
5 1

Output

FAIL

思路:5个朋友中要有3对人是互相认识,3对人是互相不认识。但若是5个人的关系之中存在环,那么这个情况便不符合要求

代码:

#include<stdio.h>
#include<string.h>
int re[10];
int main()
{
    int n,i,x,y,flag;
    while(~scanf("%d",&n))
    {
        memset(re,0,sizeof(re));
        for(i=0;i<n;i++)
        {
           scanf("%d%d",&x,&y);
           re[x]++;
           re[y]++;
        }
        flag=0;
        for(i=1;i<=5;i++)
        {
            if(re[i]!=2)
               flag=1;
        }
        if(flag)
            printf("WIN\n");
        else
            printf("FALL\n");
    }
    return 0;
}

 

### 关于 ZCMU 1053 的 IT 问题或编程挑战 ZCMU(浙江工商大学 ACM/ICPC 在线评测系统)中的问题编号通常对应特定的算法或数据结构题目。根据用户提到的“ZCMU 1053”,可以推测这是一个与算法相关的编程挑战。以下是关于 ZCMU 1053 的详细信息和解答思路。 #### 题目概述 ZCMU 1053 的题目可能涉及动态规划、贪心算法或其他基础算法。由于具体题目内容未提供,以下假设该题目为一个经典的背包问题或序列优化问题。如果实际题目有所不同,请补充具体描述以便更精准地解答。 #### 动态规划解决方法 假设 ZCMU 1053 是一个类似于 0-1 背包的问题,其核心思想是通过动态规划求解最优解。以下是一个通用的 0-1 背包问题代码实现[^2]: ```cpp #include <iostream> #include <vector> using namespace std; const int MAX_W = 1000; // 最大容量 int dp[MAX_W + 1]; // 动态规划数组 int main() { int n, W; // 物品数量和背包容量 cin >> n >> W; vector<int> weight(n), value(n); for (int i = 0; i < n; ++i) cin >> weight[i] >> value[i]; // 初始化 dp 数组 for (int i = 0; i <= W; ++i) dp[i] = 0; // 动态规划转移方程 for (int i = 0; i < n; ++i) { for (int j = W; j >= weight[i]; --j) { dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); } } cout << dp[W] << endl; // 输出最大价值 return 0; } ``` 上述代码实现了经典的 0-1 背包问题,其中 `dp[j]` 表示在容量为 `j` 的情况下能够获得的最大价值。通过逆序遍历容量避免重复选择物品。 #### 序列优化问题 如果 ZCMU 1053 涉及的是最长公共子序列(LCS)问题,则可以参考以下代码实现[^3]: ```cpp #include <iostream> #include <vector> using namespace std; int lcs(string &X, string &Y, int m, int n) { vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0)); for (int i = 1; i <= m; ++i) { for (int j = 1; j <= n; ++j) { if (X[i - 1] == Y[j - 1]) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } } } return dp[m][n]; } int main() { string X, Y; cin >> X >> Y; int m = X.size(), n = Y.size(); cout << lcs(X, Y, m, n) << endl; return 0; } ``` 此代码实现了两个字符串之间的最长公共子序列长度计算。动态规划数组 `dp[i][j]` 表示字符串 `X[0..i-1]` 和 `Y[0..j-1]` 的 LCS 长度。 #### 结论 根据题目类型的不同,ZCMU 1053 可能涉及背包问题、序列优化问题或其他经典算法。上述代码提供了两种常见问题的解决方案,具体实现需根据题目要求调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值