acm hnu 10182 置换排列

来源:互联网 发布:blog搭建并与mysql分离 编辑:程序博客网 时间:2024/05/21 19:50
置换排列 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Total submit users: 201, Accepted users: 193 Problem 10182 : No special judgement Problem description 给定一个自然数n 和 1到n的一个排列,比如 4 及 排列 1 4 3 2,我们说1放在第1个位置,第1个位置放了1,4放在第2个位置,第4个位置放2,3放在第3个位置,第3个位置放了3;我们可以输出yes;但是对5 以及 排列 2 3 4 5 1 却不成立,我们输出no。

Input 第一行t,表示测试数据的个数接下来的t行每行是n 和 1到n的一个排列共n+1个自然数,n<=100。

Output 对每个测试数据输出yes 或者 no。

Sample Input
34 1 4 3 25 2 3 4 5 11 1
Sample Output
yesnoyes
Problem Source CSU 1st Contest
#include <stdio.h>
#define MAX 150
#define YES 1
#define NO 0
main()
{
 
int p=0,k=0,n=0,i=0,j=0,flag;
 
int num[MAX];
 
 scanf(
"%d",&k);
 
for(p=0;p<k;p++){
     scanf(
"%d",&n);
     
for(i=1;i<=n;i++)scanf("%d",&num[i]);
     
for(i=1;i<=n;i++){
        
if( (num[num[i]] == i) )flag=YES;
        
else {flag=NO; break;}                
     }
     
if(flag==YES)printf("yes ");
     
else printf("no ");
     
                  
 }
 system(
"PAUSE");
       
}