Codeforces Round #277.5 (Div. 2)-D「建议收藏」

Codeforces Round #277.5 (Div. 2)-D

大家好,又见面了,我是全栈君。

题意:求该死的菱形数目。直接枚举两端的点。平均意义每一个点连接20条边,用邻接表暴力计算中间节点数目,那么中间节点任选两个与两端可组成的菱形数目有r*(r-1)/2.

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<cstring>
#include<algorithm>
#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define rev(i,a,b) for(int i=(a);i>=(b);i--)
#define clr(a,x) memset(a,x,sizeof a)
typedef long long LL;
using namespace std;

const int mod=1e9 +7;
const int maxn=3005;
const int maxm=30005;

int first[maxn],nex[maxm],v[maxm],ecnt,g[maxn][maxn];

void add_(int a,int b)
{
    v[ecnt]=b;
    nex[ecnt]=first[a];
    first[a]=ecnt++;
}
int main()
{
    int n,m,x,y;
    while(~scanf("%d%d",&n,&m))
    {
        memset(first,-1,sizeof first);ecnt=0;
        memset(g,0,sizeof g);
        for(int i=0;i<m;i++)
            scanf("%d%d",&x,&y),add_(x,y),g[x][y]=1;
        int ans=0;
        for(int i=1;i<=n;i++)
        {
           for(int j=1;j<=n;j++)
           if(i!=j){
               int r=0;
               for(int e=first[i];~e;e=nex[e])
               if(g[v[e]][j])r++;
               ans+=r*(r-1)/2;
           }
        }
        printf("%d\n",ans);
    }
    return 0;
}

D. Unbearable Controversy of Being
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Tomash keeps wandering off and getting lost while he is walking along the streets of Berland. It’s no surprise! In his home town, for any pair of intersections there is exactly one way to walk from one intersection to the other one. The capital of Berland is very different!

Tomash has noticed that even simple cases of ambiguity confuse him. So, when he sees a group of four distinct intersections abc and d, such that there are two paths from a to c — one through b and the other one through d, he calls the group a “damn rhombus”. Note that pairs (a, b)(b, c)(a, d)(d, c) should be directly connected by the roads. Schematically, a damn rhombus is shown on the figure below:


Codeforces Round #277.5 (Div. 2)-D「建议收藏」

Other roads between any of the intersections don’t make the rhombus any more appealing to Tomash, so the four intersections remain a “damn rhombus” for him.

Given that the capital of Berland has n intersections and m roads and all roads are unidirectional and are known in advance, find the number of “damn rhombi” in the city.

When rhombi are compared, the order of intersections b and d doesn’t matter.

Input

The first line of the input contains a pair of integers nm (1 ≤ n ≤ 3000, 0 ≤ m ≤ 30000) — the number of intersections and roads, respectively. Next m lines list the roads, one per line. Each of the roads is given by a pair of integers ai, bi (1 ≤ ai, bi ≤ n;ai ≠ bi) — the number of the intersection it goes out from and the number of the intersection it leads to. Between a pair of intersections there is at most one road in each of the two directions.

It is not guaranteed that you can get from any intersection to any other one.

Output

Print the required number of “damn rhombi”.

Sample test(s)
input
5 4
1 2
2 3
1 4
4 3

output
1

input
4 12
1 2
1 3
1 4
2 1
2 3
2 4
3 1
3 2
3 4
4 1
4 2
4 3

output
12

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115961.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月28日 上午7:00
下一篇 2022年1月28日 上午7:00


相关推荐

  • 基于径向基函数(RBF)的函数插值

    基于径向基函数(RBF)的函数插值1 函数插值 2 RBF 函数插值代码实现

    2026年3月16日
    2
  • pycharm设置项目路径_vscode和pycharm区别

    pycharm设置项目路径_vscode和pycharm区别#-*-coding=utf-8-*-#@Time:${DATE}${TIME}#@Author:Donvink${USER}#@Site:${SITE}#@File:${NAME}.py#@Software:${PRODUCT_NAME}

    2022年8月25日
    8
  • ofbiz介绍

    ofbiz介绍官方指导文档 http ofbiz apache org business users htmlApacheof 是一套灵活的商业应用程序 可以在任何行业使用 一个常见的架构允许开发人员轻松扩展或增强它来创建自定义特性 OFBiz 是一个基于 Java 的 web 框架 包括一个实体引擎 一个服务引擎和一个基于小部件的 UI 允许您快速地开发和开发您的 web 应用程序 nbsp 作为

    2026年3月16日
    4
  • Andon系统的工作流程介绍

    Andon系统的工作流程介绍Andon 系统本质是一款呼叫系统 应用场景以车间工厂为主 相比传统的呼叫 andon 系统具有记录事件时间点 事件呼叫原因 事件解决方法 升级呼叫等特点 记录的数据可以对设备 人员 工作流程可以进行分析 从而协同各单位更好的配合 提高整体的工作效率 下面给大家介绍下 andon 系统的基本工作流程 并把 andon 系统的特点详细介绍下 1 事件出现呼叫触发当车间出现异常事件人员通过工业按键或者虚拟按键

    2026年3月19日
    2
  • Python基础知识概要

    非常简单的python入门,了解这门语言,用来为接下来的开发做基础。

    2022年3月11日
    40
  • 数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)

    数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)目录 1 边缘检测的基本原理 2 边缘检测算子分类 3 梯度 3 1 图像梯度 3 2 梯度算子 4Roberts 算子 4 1 基本原理 4 2 代码示例 5Prewitt 算子 5 1 基本原理 5 2 代码示例 6Sobel 算子 6 1 基本原理 6 2 代码示例 7Laplacian 算子 7 1 基本原理 7 2 代码示例 8 小结 8

    2026年3月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号