top1编程
← 返回题目
题解

搭配购买

2 条题解

  • 0
    @ 2026-7-28 22:31:38
    #include<bits/stdc++.h>
    using namespace std;
    int n,t;
    int p[2005];
    int main(){
    	cin >> t;
    	while(t--){
    		cin >> n;
    		for(int i = 1;i <= 2 * n;i++){//有2n个小朋友
    			cin >> p[i];//i小朋友想跟谁同座
    		}
    		int flag = 0;
    		for(int i = 1;i <= 2 * n;i++){
                //p[i]和i不是互为同桌或者同桌是自己,不能满足全部都满意
    			if(i != p[p[i]] || i == p[i]){
    				flag = 1;//标记不能全部满足
    				break;
    			}
    		}
    		if(flag==1){
    			cout << "No"<<endl;
    		}else{
    			cout << "Yes"<<endl;
    		}
    	}
    	return 0;
    }
    
    • 0
      @ 2026-7-28 22:31:38
      #include<bits/stdc++.h>
      using namespace std;
      int n,t;
      int p[2005];
      int main(){
      	cin >> t;
      	while(t--){
      		cin >> n;
      		for(int i = 1;i <= 2 * n;i++){//有2n个小朋友
      			cin >> p[i];//i小朋友想跟谁同座
      		}
      		int flag = 0;
      		for(int i = 1;i <= 2 * n;i++){
                  //p[i]和i不是互为同桌或者同桌是自己,不能满足全部都满意
      			if(i != p[p[i]] || i == p[i]){
      				flag = 1;//标记不能全部满足
      				break;
      			}
      		}
      		if(flag==1){
      			cout << "No"<<endl;
      		}else{
      			cout << "Yes"<<endl;
      		}
      	}
      	return 0;
      }
      
      • 1