Aufun带我做题辣!显然这种神仙题并不是我该碰的==

不过既然看了题解还看懂了就写一篇题解记录一下子吧。

首先如果你不能把题转化成“如果x->y有边,y->z有边,就可以往z->x上加一条边,求最后有多少条边”这种形式的话那就没法做了。。

知道这么做了以后我们考虑环对答案的影响

首先一个三元环对答案的贡献是三条边

比三元环大的环其实不用考虑,因为最后一定会被缩成许多个三元环二元环或自环

如果产生了一个二元环,它对答案的贡献只有2吗?NO!

每一个点都会通过环回到自己而这样以后,任何连向这两点的点都会和这两点建出双向边

最后整个联通块会变成一个完全图,而且每个点和自己还连有一条边,对答案的贡献则是size*size

而如果一个联通块内没有环,那么就不会产生新的边,联通块对答案的贡献就是边数

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #define ll long long
 5 #define M 100010
 6 using namespace std;
 7 struct point{
 8     int to,next,f;
 9 }e[M<<1];
10 int n,m,num;
11 ll tot1,tot2,ans;
12 int head[M],co[M];
13 ll cnt[5];
14 bool flag;
15 bool vis[M];
16 void add(int from,int to,int f)
17 {
18     e[++num].next=head[from];
19     e[num].to=to;
20     e[num].f=f;
21     head[from]=num;
22 }
23 void dfs(int x)
24 {
25     vis[x]=true; tot1++;
26     cnt[co[x]]++;
27     for(int i=head[x];i;i=e[i].next)
28     {
29         int to=e[i].to;
30         tot2+=e[i].f==1;
31         if(!vis[to])
32         {
33             co[to]=(co[x]+e[i].f+3)%3;
34             dfs(to);
35         }
36         else if(co[to]!=(co[x]+e[i].f+3)%3) flag=true;
37     }
38 }
39 int main()
40 {
41     scanf("%d%d",&n,&m);
42     for(int i=1;i<=m;i++)
43     {
44         int x,y; scanf("%d%d",&x,&y);
45         add(x,y,1); add(y,x,-1);
46     }
47     for(int i=1;i<=n;i++)
48     {
49         if(!vis[i])
50         {
51             flag=false;
52             tot1=tot2=0;
53             cnt[0]=cnt[1]=cnt[2]=0;
54             dfs(i);
55             if(flag) ans+=tot1*tot1;
56             else if(cnt[0]&&cnt[1]&&cnt[2]) ans+=cnt[0]*cnt[1]+cnt[1]*cnt[2]+cnt[2]*cnt[0];
57             else ans+=tot2;
58         }
59     }
60     printf("%lld",ans);
61     return 0;
62 }

转载于:https://www.cnblogs.com/Slrslr/p/9534665.html

[AGC006F]Blackout相关推荐

  1. UVA 10600 ACM Contest and Blackout (次小生成树)

    题目大意: 给n个节点,m条边,问最小生成树,次小生成树? ps:以前做次小生成树的时候估计没有掌握牢固,这次wa的好辛苦哟. 1 #include <cmath> 2 #include ...

  2. 1977中文版_历年星云、雨果获奖长篇中文版汇总

    有知友说"星云.雨果获奖长篇小说国内引进不多"--你看你看,这就是"不关心".简单列一下历年星云.雨果长篇小说的中文版.有的小说多次引进,以最新版为准. 195 ...

  3. 黑马程序员 交通灯案例

    ---------------------- android培训.java培训.期待与您交流! ---------------------- 通过张老师的交通灯的例子我认识到了很多:首先是要结合现实生 ...

  4. DLM:微信大规模分布式n-gram语言模型系统

    来源 | 微信后台团队 Wechat & NUS<A Distributed System for Large-scale n-gram Language Models at Tence ...

  5. unix oracle控制台,Linux平台下启动oracle11gEM控制台

    当我们的oracle服务器是使用的Linux/Unix系统时,我们从windows或者其他的客户端想用启动oracle的EM工具了解一些系统系统信息时可 当我们的Oracle服务器是使用的Linux/ ...

  6. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  7. 论文荐读 | NLP之Attention从入门到精通

    https://www.toutiao.com/a6709249369914212872/ Sequence to Sequence Learning with Neural Networks seq ...

  8. OpenCV对象检测实例

    https://www.toutiao.com/a6644490462834983438/ 2019-01-09 21:36:31 在本文中,我将演示如何跟踪传送带上的对象.这可以用于在传送带上定位对 ...

  9. 别让用户发呆——设计中的防呆策略

    http://kb.cnblogs.com/page/190039/ 生活中总会有些状况让我们无所适从摸不着头脑:面对一排电灯或空调的按钮,哪个才是控制我想要的?开锁时掏出一把钥匙,哪个才是正确的?拿 ...

  10. 全球三大BCH(比特币现金)城市,有你想去的吗

    加密货币发展到现在,可能有很多人已经忘了比特币是用来干什么的了,它是一种可以被用来支付的货币,抗审查和抗通胀的货币属性才是它存在的意义,但随着其核心开发团队的理念跑偏,他们认为比特币的储值属性优于支付 ...

最新文章

  1. 【HDU】1005 Number Sequence (有点可爱)
  2. python语言中文社区-python解决中文
  3. Java黑皮书课后题第5章:**5.34(游戏:石头、剪刀、布)编程练习题3.17给出玩石头-剪刀-布游戏的程序。修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止
  4. linux远程计算,如何使用Linux应用服务器场的远程计算?
  5. 技术专题:厦门9月30日限制路由(网络尖冰),WAYOS或ROS解决方案
  6. 斯大林格勒拖拉机厂LCA项目研制成功
  7. 京东动态页面爬虫 scrapy+selenium
  8. Kubernetes 搭建 Kafka 和 Zookeeper 集群(完整教程)
  9. 4.3配置自定义情况的Bean实例
  10. H - 数论中的异或 HRBUST - 1688
  11. 【Deep learning】NLP
  12. 【预测模型】Gompertz 曲线方程预测
  13. Life feelings--9--Mamba out 科比走了,给我们留下的那些惦念
  14. 基于TX2的全向四轮小车搭建(一)
  15. 华为手机充当电脑的无线U盘 - 华为无线连接电脑 - 华为分享
  16. [NOIP2010 普及组] 三国游戏 题解
  17. 人类像计算机一样思考 议论文,人工智能时代——人应像人一样思考作文800字...
  18. 不降价的促销利器--让渡营销
  19. (5)CC3200学习之串口
  20. PGSQL 日期时间的比较

热门文章

  1. 毕业设计——基于STM32的智能家具系统(语音识别控制、步进电机、舵机)
  2. 如何成为优秀的驱动开发工程师
  3. JS05-循环的嵌套demo
  4. 7-inch LCD 调试记录 DM6437
  5. Seaborn绘图-绘制散点图,折线图-分类统计图
  6. 程序员前景一片灰暗?网友:不行找个班上吧
  7. vscode快速删除空白行方法
  8. 微信商户中查看 appid
  9. excel 两列数据合并去重取并集
  10. 实际成本调整(R12)