NC205458. 三边形链表
描述
输入描述
一个数字n,表示有n个节点接下来有n个数字,表示ki
输出描述
若能形成三边形循环链表,则输出“YES”,否则输出“NO”
示例1
输入:
5 2 4 5 1 3
输出:
YES
说明:
以1为头节点的链表可以形成一个三边形循环链表,1->2->4->1C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 488K, 提交时间: 2020-04-25 11:54:05
#include <iostream> using namespace std; int main(){ int n,i,j; j=0; cin>>n; int a[n+1]; for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++){ if(a[a[a[i]]]==i){ j = 1; break; } } if(j) printf("YES\n"); else printf("NO\n"); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 380K, 提交时间: 2022-12-05 18:38:28
#include<stdio.h> int main(){ int n; scanf("%d",&n); int a[10000]; for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<n;i++) { if(a[a[a[i]]]==i) { printf("YES"); return 0; } } printf("NO"); }
C++11(clang++ 3.9) 解法, 执行用时: 2ms, 内存消耗: 376K, 提交时间: 2020-08-15 18:34:39
#include<iostream> using namespace std; int main(){ int n,a[1000],i; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<=n;i++) { if(a[a[a[i]]]==i) { cout<<"YES";break; } } if(i>n) cout<<"NO"; return 0; }