题目描述
一天小A在金色的银杏树下向他喜欢的小姐姐B表白了,“对不起,我喜欢的是C”,B这样说道,小A尴尬的笑了笑转身离开了。他心里默默说着“对不起,C喜欢我。”(233333333)
Love triangle被定义为:如果A喜欢B,B喜欢C,C喜欢A则称为Love triangle。现在让你寻找有没有Love triangle。
输入描述:
第一行一个正整数N(n<=5000),第二行n个数X1,X2,X3……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; }
我居然被这种题搞死了……语文真的要好好学啊……