41.同色三角形 (15分)

来源:互联网 发布:javascript matlab 编辑:程序博客网 时间:2024/05/17 04:49
题目内容:
 平面上有n个点(n≤8000),每两个点之间都有一条红色或者是黑色的线段,任意三点均不共线。现在,已知哪些点之间连的线段是红色的,剩下的线段都是黑色的,要求计算这些点组成的三角形中有多少是同色的(顶点编号从1到n)?
输入描述
第一行是n, m(3≤n≤8000),n表示点的个数,m表示红色线段的条数。下面m行,每一行都是两个整数a和b,表示点a和点b之间的线段是红色的(a<b)。

输出描述
只有一行,表示同色三角形的个数。提示:本题输出数据可能会超出长整数(long int)的范围。

输入样例
6 51 21 32 32 53 6

输出样例

7

#include <stdio.h>#define N 1000int a[N][N]={0};int main(){int n,m;int x,y;int t=0;int i,j,k;scanf("%d%d",&n,&m);for(i=1;i<=m;i++){scanf("%d%d",&x,&y);a[y][x]=1;a[x][y]=1;}for(i=1;i<=n;i++)for(j=i+1;j<=n;j++)for(k=j+1;k<=n;k++)if(a[i][j]==a[i][k]&&a[i][j]==a[j][k])t++;printf("%d ",t);return 0;}


1 0
原创粉丝点击