题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2316

题目意思:有 N 个 点,M 条 边。需要构造一个N * M 大小的矩阵A。对于 (i, j) 这个坐标点它表示,对编号为 i 这个点编号为 j 的 点与它相连,此时标记(i, j) 为1,如果坐标点没有跟这条 j 的边相连,就标记为0。构造完这个矩阵A之后,需要求出它的转置矩阵AT,算出 ATA 的和。

新学期第一场比赛!刚开始真是打算直接做的,但是数据太大了, 2 <= N <= 10 000, 1 <= M <= 100 000,只能通过观察来简化,最后做了3个多小时,终于想出来了= =!大感动!专门补了下矩阵的知识......

规律真的需要手动算下才能发现的!!!后来还犯了个低级错误,忘记清空了。每个Test 都需要啦。最后就是格式问题。每个output之间输出一个空行。

贴个代码纪念下。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; typedef long long LL;
const int N = + ; LL A[N], ans; int main()
{
int T, n, m, v1, v2;
while (scanf("%d", &T) != EOF)
{
while (T--)
{
int maxi = -;
scanf("%d%d", &n, &m);
memset(A, , sizeof(A));
for (int i = ; i <= m; i++)
{
scanf("%d%d", &v1, &v2);
A[v1]++; // 算出每个点连着多少条边
A[v2]++;
int tm = max(v1, v2);
maxi = max(maxi, tm); // 求出最大那个点的编号
}
ans = ;
for (int i = ; i <= maxi; i++)
{
if (A[i])
ans += A[i] * A[i];
}
printf("%lld\n", ans);
if (T)
puts("");
}
}
return ;
}

最新文章

  1. IIS 8:IIS 入门
  2. Flavors
  3. OpenXml入门---word里面插入图片
  4. VS2013使用EF6连接MySql
  5. 左偏树(DP)问题
  6. go exec: &quot;gcc&quot;: executable file not found in %PATH%
  7. 【转】JSON简介以及用法代码汇总
  8. mono for android工具下载
  9. SpringBoot下配置FreeMarker配置远程模版
  10. Python爬虫下载美女图片(不同网站不同方法)
  11. kibana-Request Timeout after 30000ms故障解决
  12. Java线程基础(一)
  13. CentOS 7.4 初次手记:第三章 CentOS基础了解
  14. P2865 [USACO06NOV]路障Roadblocks
  15. P3374 【模板】树状数组 1(cdq)
  16. 给定任意字符串,计算一共能组合成多少个单词bing
  17. 【转】python+django+vue搭建前后端分离项目
  18. ATK系列库介绍
  19. 「个人训练」Can you solve this equation?(HDU-2199)
  20. VisualSVN的安装使用

热门文章

  1. Ubuntu 16.04中的Dock的应用顺序调整
  2. 如何模拟alert/confirm/prompt实现阻断程序运行
  3. Pixhawk之姿态解算篇(1)_入门篇(DCM Nomalize)
  4. c# Dictionary拓展2个key得到1个value
  5. 菜鸟调错(十)——启动Tomcat报错“Unsupported major.minor version xxx ”
  6. (全然背包)小P寻宝记——好基友一起走
  7. HMM MEMM CRF 差别 联系
  8. kubernetes之计算机资源管理
  9. Ionic + AngularJS angular-translate 国际化本地化解决方案
  10. 08 comet反向ajax