公式

F - 三角関係 / Love Triangle 解説 by kyopro_friends


\(i\) を固定したとき、もし与えられた条件全てを満たすような組 \((i,j,k)\) が存在すれば、3つ目の条件から \(j=A_i\) 、4つ目の条件から \(k=B_i\) に限ります。よって、\((i,A_i,B_i)\) が全ての条件を満たしているかどうかを各 \(i\) について調べれば十分です。

実装例(C++)

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	cin >> n;
	vector<int>a(n+1),b(n+1);
	for(int i=1; i<=n; i++)cin >> a[i] >> b[i];

	int ans=0;
	for(int i=1; i<=n; i++){
		int j=a[i], k=b[i];
		if(i<j && b[j]==k)ans++;
	}

	cout << ans << endl;
}

実装例(Python)

N=int(input())
A=[0]*(N+1)
B=[0]*(N+1)
for i in range(1,N+1):
  a,b=map(int,input().split())
  A[i]=a
  B[i]=b

ans=0
for i in range(1,N+1):
  j=A[i]
  k=B[i]
  if i<j and B[j]==k:
    ans+=1

print(ans)

投稿日時:
最終更新: