博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CF489D]Unbearable Controversy of Being
阅读量:5009 次
发布时间:2019-06-12

本文共 1190 字,大约阅读时间需要 3 分钟。

题目大意:求有向图中这种图的数量

 

从分层图来考虑,这是一个层数为3的图

枚举第一个点能到达的所有点,对他们进行BFS求第三层的点(假装它是BFS其实直接枚举效果一样)

代码:

1 #include
2 #include
3 #include
4 #include
5 #define ll long long 6 #define M 100010 7 using namespace std; 8 struct point{ 9 int to,next;10 }e[M<<1];11 int n,m,num;12 int head[M],vis[M];13 ll ans;14 void add(int from,int to)15 {16 e[++num].next=head[from];17 e[num].to=to;18 head[from]=num;19 }20 void bfs(int x)21 {22 memset(vis,0,sizeof(vis));23 queue
q;24 for(int i=head[x];i;i=e[i].next) q.push(e[i].to);25 while(!q.empty())26 {27 int p=q.front(); q.pop();28 for(int i=head[p];i;i=e[i].next)29 {30 int to=e[i].to;31 if(to!=x) vis[to]++;32 }33 }34 for(int i=1;i<=n;i++) ans+=(ll)(vis[i]-1)*vis[i]/2;35 }36 int main()37 {38 scanf("%d%d",&n,&m);39 for(int i=1;i<=m;i++)40 {41 int x,y; scanf("%d%d",&x,&y);42 add(x,y);43 }44 for(int i=1;i<=n;i++) bfs(i);45 printf("%lld",ans);46 return 0;47 }

 

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

你可能感兴趣的文章
Java读取并下载网络文件
查看>>
github上构建自己的个人网站
查看>>
在word中粘贴的图片为什么显示不完整
查看>>
SQL Server 数据库的鼠标操作
查看>>
net软件工程师求职简历
查看>>
总线置顶[置顶] Linux bus总线
查看>>
nullnullHandling the Results 处理结果
查看>>
SQL SERVER BOOK
查看>>
JS基础回顾,小练习(判断数组,以及函数)
查看>>
多任务——进程
查看>>
WCF:如何将net.tcp协议寄宿到IIS
查看>>
WebAPI HelpPage支持area
查看>>
Path元素
查看>>
php_soap扩展应用
查看>>
第二百三十一节,Bootstrap 介绍
查看>>
vi/vim 三种模式的操作
查看>>
JAVA面向对象三大特性总结
查看>>
guid
查看>>
Python中出现“TabError: inconsistent use of tabs and spaces in indentation”问题的解决
查看>>
ajax请求
查看>>