题目描述

一天小A在金色的银杏树下向他喜欢的小姐姐B表白了,“对不起,我喜欢的是C”,B这样说道,小A尴尬的笑了笑转身离开了。他心里默默说着“对不起,C喜欢我。”(233333333)

Love triangle被定义为:如果A喜欢B,B喜欢C,C喜欢A则称为Love triangle。现在让你寻找有没有Love triangle。

输入描述:

第一行一个正整数N(n<=5000),第二行n个数X1,X2X3……Xn代表i喜欢Xi

输出描述:

如果存在Love triangle则输出YES,没有则输出NO。
示例1

输入

5
2 4 5 1 3

输出

YES


这题我本来以为,是个很简单的题目……

事实上它也的确是个很简单的题目……

但是我一直没理解对……

我一开始的代码写的就是A->B,B->C,然后C不等于A,就完事了,觉得完美

于是就陷入了WA的死亡循环……

我一直到比赛结束还是这么理解的  直到我看了人家的代码。。

原来C还要喜欢A的……

这就尴尬了呀……

po一下代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1e9
#define ll long long

int main()
{
    int n,i,x[6000];
    scanf("%d",&n);
    for(i=1; i <=n; i++)
    {
        scanf("%d",&x[i]);
    }
    int judge=0;
    for(i=1; i <= n; i++)
    {
        if(x[x[x[i]]]==i)
        {
            printf("YES\n");         //没什么难度,总之就是i对应的x[i]喜欢的人对应喜欢的人再对应的人是i,然后就……三角恋了?
            judge = 1;
            break;
        }
    }
    if(judge == 0)
        printf("NO\n");
    return 0;
}

我居然被这种题搞死了……语文真的要好好学啊……

posted on 2019-01-05 16:21  Lyrix  阅读(182)  评论(0编辑  收藏  举报