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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用@Profiled注解或自定义AOP拦截打印日志json序列化失败

    使用@Profiled注解或自定义AOP拦截打印日志json序列化失败项目中使用@Profiled注解方式进行统一日志打印输出fastjson踩坑记录一下1:@Profiled注解方式如上图:方法上使用注解@Profiled,因为我的入参有HttpServletResponse,日志打印时会对所有入参进行序列化操作,所对以HttpServletResponse进行JSON.toJSONString()转换会抛出以上异常,此时要么干掉HttpServletResponse,或者换一种方式手动注入HttpServletResponse即可解决以上异常,如下图:

    2022年6月6日
    25
  • c# 加壳工具推荐[通俗易懂]

    c# 加壳工具推荐[通俗易懂]当前C#.net语言的应用范围越来越广泛,IIS的服务器架构后台代码、桌面应用程序的winform、Unity3d的逻辑脚本都在使用。C#.net具备强大的便捷特性,使得开发成本极低。而作为一款.net语言,也有它让开发者头疼的弊病——非常容易被反编译。市面上的Dnspy,ILspy,de4dot等工具可以非常容易反编译出被混淆保护的C#.net程…

    2022年6月27日
    54
  • String、StringBuilder和StringBuffer

    String、StringBuilder和StringBuffer这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder &gt; StringBuffer &gt; String  String最慢的原因:  String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但…

    2022年6月13日
    28
  • drupal安装教程(6.X版安装教程)【图文教程】[通俗易懂]

    drupal安装教程(6.X版安装教程)【图文教程】[通俗易懂]
    由于英文不是很好,而且在安装时遇到很多困难,所以把在网上找到的drupal详细安装步骤分享一下,希望能帮助更多人。

    1、先下载drupal6.X版拷到web根目录下,从浏览器打开链接,会直接进入安装页面。
    如图1所示,先让你选择安装语言,选第一个“InstallDrupalinEnglish”

    图1
    点击“InstallDrupalinEnglish”以后出现图2所示的错误提示,然后按照错误提示的操作步骤

    2022年7月20日
    14
  • 请描述django模板中标签的作用?_产品标签设计模板

    请描述django模板中标签的作用?_产品标签设计模板常用的模板标签if标签if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==、!=、<、<=、&

    2022年7月31日
    6

发表回复

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

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