#include <bits/stdc++.h>
using namespace std;
const long long N=1e4+1;
long long a[N][N]={0},m,n,ans=0,x,y;
int main()
{
cin>>n>>m;
for (long long i=0;i<=m-1;i++)
{
cin>>x>>y;
a[x][y]=1;
}
for (long long i=0;i<=n-1;i++)
{
for (long long j=0;j<=n-1;j++)
if (a[i][j]==1&&a[j][i]==1)
ans++;
}
ans/=2;
printf("%ld",ans);
return 0;
}
二元组
题目描述
在一个有向图中,我们定义一个二元组(a,b)为:
存在边<a,b>和<b,a>使得顶点a、b形成一个回路。
请问图中共有几对顶点满足构成二元组的条件。
输入格式
输入第一行包含两个整数n,m,表示有n个顶点,分别编号为1~n,有m条有向边;
以下m行每行两个正整数x,y,表示顶点x至顶点y存在一条有向边。
注意:本题存在自环与重边。
输出格式
输出一个整数,为有几对二元组。
样例 #1
样例输入 #1
4 5
2 3
2 4
2 1
1 3
3 1
样例输出 #1
1
提示
对于100%的数据,n<=10000,m<=100000。