大红数星星 图论 XD网络赛
问题 A: 大红数星星
时间限制: 3 Sec 内存限制: 128 MB
提交: 1066 解决: 67
[提交][状态][讨论版]
题目描述
“三角形十分的美丽,相信大家小学就学过三角形具有稳定性,三角形也是二维几何中最基本的必不可少的元素之……”,大红走在路上若有所思,突然抬头看到了天空中有很多很亮的星星划过,星星和他们划过的轨迹像极了一个无向图。于是好学的大红,就开始数起了“三角形”,1、2、3……数了好久,大红数的眼泪都掉下来了,所以他哭着请求你来帮他,你这么好心一定不会拒绝吧!大红的三角形的定义:如果存在这样的三个边(A,B)、(B,C)、(A,C)(无向边),则算一个三角形。
大红会告诉你这个图G=(V,E),点数(星星个数)n和边数(轨迹个数)m以及每条边的两个点。
两个三角形不同是:当对于两个三角形的边,某个三角形存在一条边在另一个三角形的边中无法找到!
输入
多组数据。
第一行一个整数T<=10表示数据组数。
对于每组数据的第一行n表示星星个数,m表示星星划过的轨迹的个数,
接下来m行表示每个星星划过的轨迹的端点x,y(1<=x,y<=n)。
1<=n<=100000,1<=m<=min(100000,n*(n-1)/2)
输出
对于每组数据输出一个整数,表示三角形的个数。
样例输入
1
3 3
1 2
2 3
1 3
样例输出
1
#include<iostream>
#include<cstdio>
#include<cstring>
#include<sstream>
#include<algorithm>
#include<queue>
#include<vector>
#include<cmath>
#include<map>
#include<set>
#include<fstream>
#include<memory>
#include<string>
using namespace std;
typedef long long LL;
#define MAXN 100003
#define INF 1000000009
/*
寻找三角形的个数
思路:
1. 枚举所有边,然后枚举边上两个点中度比较小的 那个点中包含可以到达 枚举的边中另一点的边 +1
最后/3
2. 先把所有点按照度的大小排序,然后用数组记录一个点可以到达的顶点(要求顶点的度大于它)
然后枚举每条边,找两个顶点的公共元素数目
*/
vector<int> E[MAXN];
vector<int> cnt[MAXN];
struct edge
{
int f, t;
};
int T, n, m;
vector<edge> a;
int main()
{
edge tmp;
int f, t;
scanf("%d", &T);
while (T--)
{
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++)
{
E[i].clear();
}
a.clear();
int sum = ;
for (int i = ; i < m; i++)
{
scanf("%d%d", &tmp.f, &tmp.t);
E[tmp.f].push_back(tmp.t);
E[tmp.t].push_back(tmp.f);
a.push_back(tmp);
}
for (int i = ; i <= n; i++)
{
sort(E[i].begin(), E[i].end());
}
for (int i = ; i <= n; i++)
{
for (int j = ; j < E[i].size(); j++)
{
if (E[E[i][j]].size() > E[i].size())
cnt[i].push_back(E[i][j]);//可以到达的顶点 在这里保证顶点的度大于它的度
}
}
for (int i = ; i < m; i++)//枚举所有边,找两个顶点的公共点个数
{ f = a[i].f, t = a[i].t;
int s1 = E[f].size(), s2 = E[t].size();
int z = , y = ;
while (z < s1&&y < s2)
{
if (E[f][z] < E[t][y])
{
z++;
}
else if (E[f][z] > E[t][y])
{
y++;
}
else
{
z++; y++; sum++;
}
}
}
printf("%d\n", sum / );
}
}
大红数星星 图论 XD网络赛的更多相关文章
- 2018 ICPC 沈阳网络赛
2018 ICPC 沈阳网络赛 Call of Accepted 题目描述:求一个算式的最大值与最小值. solution 按普通算式计算方法做,只不过要同时记住最大值和最小值而已. Convex H ...
- 2018 ICPC 徐州网络赛
2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function(切比雪夫多项式+乘法逆元)
题目链接:哈哈哈哈哈哈 _(:з」∠)_ _(:з」∠)_ _(:з」∠)_ _(:з」∠)_ _(:з」∠)_ 哈哈哈哈哈哈,从9月16日打了这个题之后就一直在补这道题,今天终于a了,哈哈哈哈哈哈. ...
- POJ-2796 & 2019南昌邀请赛网络赛 I. 区间最大min*sum
http://poj.org/problem?id=2796 https://nanti.jisuanke.com/t/38228 背景 给定一个序列,对于任意区间,min表示区间中最小的数,sum表 ...
- 2018 ICPC 焦作网络赛 E.Jiu Yuan Wants to Eat
题意:四个操作,区间加,区间每个数乘,区间的数变成 2^64-1-x,求区间和. 题解:2^64-1-x=(2^64-1)-x 因为模数为2^64,-x%2^64=-1*x%2^64 由负数取模的性质 ...
- ACM总结——2017区域赛网络赛总结
从省赛回来至今4周,每周周末都在打网络赛,每次都是划水,总结下自己弱弱的ACM吧!划水水~~ 首先是新疆赛区,基本上都是图论相关的东西,全靠队友,自己翻水水,实力躺了5道. 然后是沈阳赛区,终于有点贡 ...
- (未完结)“文远知行杯”GDET第十四届竞赛(网络赛共10题,仅整理出6题)
刚开学没多久就打了一个网络赛,通过这次网络赛我是发现我是真的菜... 放假前校赛的排名让我有些自满,寒假丝毫没有接触ACM,一直沉迷于Steam,这个真的值得好好反省. 虽然现在大一课有点多,在学校也 ...
- HDU 4759 Poker Shuffle(2013长春网络赛1001题)
Poker Shuffle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- HDU 4747 Mex (2013杭州网络赛1010题,线段树)
Mex Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
随机推荐
- Buildroot构建指南——工具链【转】
本文转载自:http://blog.csdn.net/zhou_chenz/article/details/52346134 Linux系统的交叉编译工具链用来将源代码变成bin文件或者库文件的一个软 ...
- poj--2031--Building a Space Station(prime)
Building a Space Station Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 6635 Accepte ...
- U32670 小凯的数字 数学
这是洛谷一个比赛中的一道题,和去年NOIP D1T1挺像.我看了一眼之后想“这不是小学奥数吗?求一个数字和就好了呀”...然后,60,剩下T了,gg. 只好看正解,但是一脸懵逼???然后看了证明,c* ...
- C语言程序创建文件夹
#include <stdio.h> #include <process.h> #include <dir.h> int main(void) { int stat ...
- PCB MongoDB数据库 备份与还原
一. MongoDB数据库 备份与还原工具介绍: 数据备份工具 mongodump.exe 数据还原工具 mongorestore.exe 二. MongoDB数据库备份 mongodump - ...
- js基本功能大全
1.javascript的数组API: //定义数组 var pageIds = new Array(); pageIds.push('A'); 数组长度 pageIds.length; //shif ...
- 给.Net Core添加Docker文件支持和运行
1.添加一个Dockerfile文件,将其移到解决方案文件夹,模板如下: FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build WORKDIR /ap ...
- golang——(strings包)常用字符串操作函数
(1)func HasPrefix(s, prefix string) bool 判断字符串s是否有前缀字符串prefix: (2)func HasSuffix(s, suffix string) b ...
- tp 3.1.3 动态切换模板问题
if($this->isMobile()) { C('DEFAULT_THEME', 'mobile'); // 这里定义手机模板目录 C('TMPL_CACHE_PREFIX', 'm_'); ...
- 语法错误1:TabError: Inconsistent use of tabs and spaces in indentation
如图错误: 出错原因: 由于写代码过程用的tab缩进 解决方法: 把tab缩进改用空格缩进