D >A->B->C-

题目描述

一天小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;
}

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

转载于:https://www.cnblogs.com/Lyrixblogs/p/10225024.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值